Return all users of a domain and their photos with the google API

0

I have this code in lumen (laravel) that is returned to me by the users of my Gsuite domain (it works correctly), I have all the data of the users in a Json file in the $ users object, there I receive a JSON as this

{  
"data":{  
  "etag":"\"LW8ywR8igXXXX6tx8gAGB-fySsA\/Xg8OYbk99s-_SE6WTGelfAGC_Jg\"",
  "kind":"admin#directory#users",
  "nextPageToken":null,
  "triggerEvent":null,
  "users":[  
     {  
        "addresses":null,
        "agreedToTerms":true,
        "aliases":null,
        "changePasswordAtNextLogin":false,
        "creationTime":"2016-11-07T16:25:12.000Z",
        "customSchemas":{  
           "Legal":{  
              "DNI":"XXXXXXX"
           }
        },
        "customerId":"XXXXX",
        "deletionTime":null,
        "emails":[  
           {  
              "address":"[email protected]",
              "primary":true
           }
        ],
        "etag":"\"LW8ywR8igJCaw6tx8gAGB-fySsA\/9R6JNs03hf_Rqjf3RiXXXXZI7fI\"",
        "externalIds":[  
           {  
              "value":"",
              "type":"organization"
           }
        ],
        "gender":null,
        "hashFunction":null,
        "id":"117875884468373414859",
        "ims":null,
        "includeInGlobalAddressList":true,
        "ipWhitelisted":false,
        "isAdmin":false,
        "isDelegatedAdmin":false,
        "isEnforcedIn2Sv":false,
        "isEnrolledIn2Sv":false,
        "isMailboxSetup":true,
        "keywords":null,
        "kind":"admin#directory#user",
        "languages":null,
        "lastLoginTime":"2018-05-17T13:26:12.000Z",
        "locations":null,
        "nonEditableAliases":[  
           "[email protected]"
        ],
        "notes":null,
        "orgUnitPath":"\/Test\/Staff",
        "organizations":[  
           {  
              "title":"",
              "primary":true,
              "customType":"",
              "department":"",
              "description":"",
              "costCenter":""
           }
        ],
        "password":null,
        "phones":null,
        "posixAccounts":null,
        "primaryEmail":"[email protected]",
        "relations":null,
        "sshPublicKeys":null,
        "suspended":false,
        "suspensionReason":null,
        "thumbnailPhotoEtag":"\"LW8ywR8igJCaw6tx8gAGB-fySsA\/6b9SRWNtq1X9GrCKuBx0oIH5cUw\"",
        "thumbnailPhotoUrl":"https:\/\/plus.google.com\/_\/focus\/photos\/private\/AIbEiAIAAABECMvHx7rqxvmJ-AEiC3ZjYXJkX3Bob3RvKihmOWRXXXXMDA0N2FhNGFjOTg5MWMyMGQ3ZmUwYTZkOTI2NjlmZjcwMAH-M7eUA1IQrHaJjVkj/JFgn4eqHw",
        "websites":null,
        "name":{  
           "familyName":"AAA",
           "fullName":"AAA BBB",
           "givenName":"CCCC"
        }
     },

}

In the Json there is a property that is users.thumbnailPhotoUrl that returns a URL that if I put it in the browser I get a "blue icon" when this user does have a profile picture ... so I do not have Of course, this field is the one I should look for to pick up the profile picture and show it.

The function I use is this

    public function getUsersDirectory (Request $request)
{

    putenv('GOOGLE_APPLICATION_CREDENTIALS='.resource_path('credentials/admin/credentials.json'));

    $client = new \Google_Client();
    $client->useApplicationDefaultCredentials();
    $client->setSubject('[email protected]');

    $scopes = implode(' ', [
        \Google_Service_Directory::ADMIN_DIRECTORY_USER_READONLY
    ]);

    $client->setScopes($scopes);

    $service = new \Google_Service_Directory($client);
    $users = $service->users->listUsers(array('domain' => ['mydomain.com'], 'maxResults' => 500, 'projection' => 'full'));



    $client2 = new \Google_Client();
    $client2->useApplicationDefaultCredentials();
    $client2->setSubject('[email protected]');

    $scopes2 = implode(' ', [
        \Google_Service_Directory::ADMIN_DIRECTORY_USER_READONLY
    ]);

    $client2->setScopes($scopes2);

    $adminService = new \Google_Service_Directory($client);
    $users = $adminService->users_photos->get('[email protected]');

    return $this->jsonOKResponse($users);

}

As seen in this function $ users really returns the list of users and then I make a call to the api that returns this other JSON but I do not know how to show the content of "photoData"

{  
"data":{  
  "etag":"\"LW8ywR8igJCawXXXXXGB-fySsA\/7IZpDcxsaPUSKAQ9UkLcyJ9x_sQ\"",
  "height":96,
  "id":"108927737425187213905",
  "kind":"admin#directory#user#photo",
  "mimeType":"image\/jpeg",
  "photoData":"_9j_4AAQSkZJRgABAQAAAQABAAD_2wCEAAUDBAYIBwYIBwYGBgcIBwYGBgcICAcICQcJCQkHCQUHCQcHChwXCAkaCQgHGCEYGh0dHx8fBwsiJCIeJBweHx4BBQUFCAcIDwkJDxYSEhAXFRUVEhgXHhUVFRYVFxUeFRUVFR0VFR4VHxUeFRUVHhUVFRUXFR4VFRUeFRUeFR4VFf_AABEIAGAAYAMBIgACEQEDEQH_xAAcAAACAwEBAQEAAAAAAAAAAAAFBgIEBwMBAAj_xABBEAABAgQCBQgHBQcFAAAAAAACAQMABBESBSEGEyIyQgcUMUFRUmFxIzNigZGx8ENygqGyFSSSwdHS4RdTY6LC_8QAGgEAAgMBAQAAAAAAAAAAAAAAAgMBBAUABv_EACMRAAMAAgIBBAMBAAAAAAAAAAABAgMRITFBBBITcRQiYQX_2gAMAwEAAhEDEQA_ANiRI6AkRQY6QSEI-SPlKIqsRMrYkjZNSipNTYjCLymcojGGDqmhF-bIRLVktAbBeNxfjRIyCc5RtJn3NZL3EKcIMCTfwUV-cKrKkEsbo_QzswRRC6Md5PuUl8nub4sWrIjEWniDV2kS0scRN0a06o1po7sx6_h7ombTIc6LKFEkKOKFHqFBEJHdCj5TiubojATE8dESJtodc93RXIfEz4EhdUp7GpbH4Vj1ViCxTn51todooPYosvPCOZQtY_jog265da20BOGXsiKkVPHKKmI4oR-yMIfKzNkOGGIlbrnmGPcqqZfogKrgZMCVgmGlic6_Ozvq3njcASWuV1Ar7KURPwJGvYJhjDbdotjbsiOXujNpQ32tVLygsDq2guefIkbbSlAqiJtGtIctGMbnRmRlZl6XLWj6JxpKoNOtK0zz-UZdtt7NzDMwtB7SDQ-QnGSB5gRK3YcG1HGy6lA-2F7Qp6dkZksKnS1giF2HP09Y2KrsedvV1WL4R1xFGG52yYYn5-pFaWscsHrqjbZJamfzjlyitk3ISWIM3_ucy1bfdrBAyRBbOue8jaeUMxW5Yj1ONWm9DxrIp4hibTQ1NwR-ZLwoicSwvTmkOsH93tIeJ4lo237-MoFoThFrLiIv9802vaRtvgT6zi1kzqTPx4ar6COIYq-7lcTDa7rY-ucTy-yH6yjlLy-zbbq297VjxZ9Jn0mv1nHKWbH47xdKl5rBRkIo3kq-y9OOY6HfGcXbauQSuKFCcn3DKpF_SBz00RESqV0RRyNB1sz5jRcQ4XeUiR1-GP27zRA-Pb6Ndv8A6KcGEOPjMbSQt1bhLsou8ix3a0F5EdZfnTEnwtuNA4_b0uKo22ZpspWsGZuWcw9zDntWTlLGwGpLsCoNiCGvYCqv4I44C02DbrI7PNnnxaEunVk4ZM58Sf0gppJr3_2coWkKejES6BJN81TiKM58PRt4pWv6PEhMNvjc6ywJIZiNhEvo71RldsU4aZdVeuLOmeFNv4XOMW-tZO0vaRFJlfNDRIG6OyYm2d0yd21skjKpcvWlB70M022XMqHvCFpe1ROmBfY5ytcmTDJkBWmVxN2iOVBFE3bQ4fnFptPr3x1xEhJ920hIbhG4egrURKp4ZR4ym990vyiGUWibAwRYHd-uqKIRfll3frrjiGA0OJayKKuxSn8Wbay3i4RHeL_EaRQaDRzAjATEsfEbkatIk3irRsfNeJYATM---X_H3RXY_EfGvhHbD2BuFV2iQhtyogpXhThhF59cIbGDfNBLAJq54Sd2tZaJPFlsLXKxN0LqePTBvF2HAyuIaboj5Qouz0sxqhedaZuHY1hUupl1-cWJrHp11wW7gcbCwRKlVtUUUVqi7UVm2-y9Da4RqeiRu6kLXXXXXXXXXXatAiLsrRVFIBcl2HsTMtUnDuDeGtE_JIdpuUbBkkEe9d5eMRTLEptGKgu1FqWhQd0vZGbdaJgxbbedY1twlcgGQaxABNzLt6IYsCxFiZG5ly6hWl1KK-KLHe1oqNoKin6YtS27-K6K4f3DFiU3S-vCIOZlWIY2RbLV33qbXuru_WUUWmSIiUyuraVveyrtLx_WURaARHdi6to3KVoig3EXQgoibSqvZDKt0BMKUdpUNkYtAYjcRFaIbRF1CiZqq_CE_EdInNoGRERT7TpIvFO7AKan33fWuG57JESp8INYm-yHkXgpaX441MzZE05c2lrbXknWgdlax20Xxx2TKrTYODdcTZCVvuouzFVyWYMttofvDkv5R6OGNcN_8AFWH-1a0IVVvZt-gfLJKSbBuOyTokm6IGKiS8Smaolm0i9vVA3TbllncTa1aDzKWcuEm2lIjeFFoV7nc8KJGV4bLCQutXEQoXvzTa90EJBpvVkA_Zum2N3Tmgl_OA-KUP-a2tHRZ8SyAT_EBCP5pF_R_GJmTcJwCAiUbSboShSqLnn05fOKyBESbgnroUNP8AqBiHdl_4C_vg5oryg3uCMy0DbalaTwKVG17VBa5RnL7Po6xHCBcHL2yIvK0v_VIH4kEqYzgkB9P5_VSxNjvOAN3bZVbv0r8Fgw64ICREVoilxF4IlS-UZzpHiDk0RObQiqWgPdEVLVV8c1-KwrFO2FlrS0Egb2R-6MesNiRF4R9IHc0C-wPyieGFtGn3ostikiXNovSOFuOkKA2REvhnDvyV6PyU49O87Im22ZKYmw2xbQjbNhBQlVN2017OqNPlJ3AMFHSGWGdYIZmcukCkSemi5pWfBuXKYZfBCWw5daKRD0VQlSkEpFVk1wjK9GuSrFjxGXlXWClnJ5l2ZYF0m2VIWW1cOusXYqCIqVRK1SGLC-S0QxaTkJt7mnPpU5sCNtxzVOAc2wTb4Kiaqhyi1XoRKrDWeOYpjD2EzcoxLtsNTP7F1gjc42U5JyspNK7YKa1pRE1RVzRXKVXKDfKBovN8_wBGlxOfdxEXXQwsisbbUW0MVaBHAVVMrnDzVa5w-fT01v6Kd-uia9rfPPCMT01wA5WZWWdY1DrKm08FopaQqiLu73-UgZJ4JMu-pln39n7Ntxz9ArH7LwbQnCWLSCQl7kG7WOt61wVWl1Deqtap-UMZSIi3S5O7aKUSiqqRY_DnzRmv_ayJfpj4XlvR-CTlfRkn12RWkZe0i8RL-sNOLygg4633TNv3itP5QKVu1sj7BMi6skTajNfD0emjmUz_2Q==",
  "primaryEmail":"[email protected]",
  "width":96
   }
}
    
asked by ilernet 18.05.2018 в 13:15
source

1 answer

0

From what I see, the image is already returned to you, so all you have to do is set the data inside an img tag as follows:

<img src="data:image/jpeg;base64,_9j_4AAQSkZJRgABAQAAAQABAAD_2wCEAAUDBAYIBwYIBwYGBgcIBwYGBgcICAcICQcJCQkHCQUHCQcHChwXCAkaCQgHGCEYGh0dHx8fBwsiJCIeJBweHx4BBQUFCAcIDwkJDxYSEhAXFRUVEhgXHhUVFRYVFxUeFRUVFR0VFR4VHxUeFRUVHhUVFRUXFR4VFRUeFRUeFR4VFf_AABEIAGAAYAMBIgACEQEDEQH_xAAcAAACAwEBAQEAAAAAAAAAAAAFBgIEBwMBAAj_xABBEAABAgQCBQgHBQcFAAAAAAACAQMABBESBSEGEyIyQgcUMUFRUmFxIzNigZGx8ENygqGyFSSSwdHS4RdTY6LC_8QAGgEAAgMBAQAAAAAAAAAAAAAAAgMBBAUABv_EACMRAAMAAgIBBAMBAAAAAAAAAAABAgMRITFBBBITcRQiYQX_2gAMAwEAAhEDEQA_ANiRI6AkRQY6QSEI-SPlKIqsRMrYkjZNSipNTYjCLymcojGGDqmhF-bIRLVktAbBeNxfjRIyCc5RtJn3NZL3EKcIMCTfwUV-cKrKkEsbo_QzswRRC6Md5PuUl8nub4sWrIjEWniDV2kS0scRN0a06o1po7sx6_h7ombTIc6LKFEkKOKFHqFBEJHdCj5TiubojATE8dESJtodc93RXIfEz4EhdUp7GpbH4Vj1ViCxTn51todooPYosvPCOZQtY_jog265da20BOGXsiKkVPHKKmI4oR-yMIfKzNkOGGIlbrnmGPcqqZfogKrgZMCVgmGlic6_Ozvq3njcASWuV1Ar7KURPwJGvYJhjDbdotjbsiOXujNpQ32tVLygsDq2guefIkbbSlAqiJtGtIctGMbnRmRlZl6XLWj6JxpKoNOtK0zz-UZdtt7NzDMwtB7SDQ-QnGSB5gRK3YcG1HGy6lA-2F7Qp6dkZksKnS1giF2HP09Y2KrsedvV1WL4R1xFGG52yYYn5-pFaWscsHrqjbZJamfzjlyitk3ISWIM3_ucy1bfdrBAyRBbOue8jaeUMxW5Yj1ONWm9DxrIp4hibTQ1NwR-ZLwoicSwvTmkOsH93tIeJ4lo237-MoFoThFrLiIv9802vaRtvgT6zi1kzqTPx4ar6COIYq-7lcTDa7rY-ucTy-yH6yjlLy-zbbq297VjxZ9Jn0mv1nHKWbH47xdKl5rBRkIo3kq-y9OOY6HfGcXbauQSuKFCcn3DKpF_SBz00RESqV0RRyNB1sz5jRcQ4XeUiR1-GP27zRA-Pb6Ndv8A6KcGEOPjMbSQt1bhLsou8ix3a0F5EdZfnTEnwtuNA4_b0uKo22ZpspWsGZuWcw9zDntWTlLGwGpLsCoNiCGvYCqv4I44C02DbrI7PNnnxaEunVk4ZM58Sf0gppJr3_2coWkKejES6BJN81TiKM58PRt4pWv6PEhMNvjc6ywJIZiNhEvo71RldsU4aZdVeuLOmeFNv4XOMW-tZO0vaRFJlfNDRIG6OyYm2d0yd21skjKpcvWlB70M022XMqHvCFpe1ROmBfY5ytcmTDJkBWmVxN2iOVBFE3bQ4fnFptPr3x1xEhJ920hIbhG4egrURKp4ZR4ym990vyiGUWibAwRYHd-uqKIRfll3frrjiGA0OJayKKuxSn8Wbay3i4RHeL_EaRQaDRzAjATEsfEbkatIk3irRsfNeJYATM---X_H3RXY_EfGvhHbD2BuFV2iQhtyogpXhThhF59cIbGDfNBLAJq54Sd2tZaJPFlsLXKxN0LqePTBvF2HAyuIaboj5Qouz0sxqhedaZuHY1hUupl1-cWJrHp11wW7gcbCwRKlVtUUUVqi7UVm2-y9Da4RqeiRu6kLXXXXXXXXXXatAiLsrRVFIBcl2HsTMtUnDuDeGtE_JIdpuUbBkkEe9d5eMRTLEptGKgu1FqWhQd0vZGbdaJgxbbedY1twlcgGQaxABNzLt6IYsCxFiZG5ly6hWl1KK-KLHe1oqNoKin6YtS27-K6K4f3DFiU3S-vCIOZlWIY2RbLV33qbXuru_WUUWmSIiUyuraVveyrtLx_WURaARHdi6to3KVoig3EXQgoibSqvZDKt0BMKUdpUNkYtAYjcRFaIbRF1CiZqq_CE_EdInNoGRERT7TpIvFO7AKan33fWuG57JESp8INYm-yHkXgpaX441MzZE05c2lrbXknWgdlax20Xxx2TKrTYODdcTZCVvuouzFVyWYMttofvDkv5R6OGNcN_8AFWH-1a0IVVvZt-gfLJKSbBuOyTokm6IGKiS8Smaolm0i9vVA3TbllncTa1aDzKWcuEm2lIjeFFoV7nc8KJGV4bLCQutXEQoXvzTa90EJBpvVkA_Zum2N3Tmgl_OA-KUP-a2tHRZ8SyAT_EBCP5pF_R_GJmTcJwCAiUbSboShSqLnn05fOKyBESbgnroUNP8AqBiHdl_4C_vg5oryg3uCMy0DbalaTwKVG17VBa5RnL7Po6xHCBcHL2yIvK0v_VIH4kEqYzgkB9P5_VSxNjvOAN3bZVbv0r8Fgw64ICREVoilxF4IlS-UZzpHiDk0RObQiqWgPdEVLVV8c1-KwrFO2FlrS0Egb2R-6MesNiRF4R9IHc0C-wPyieGFtGn3ostikiXNovSOFuOkKA2REvhnDvyV6PyU49O87Im22ZKYmw2xbQjbNhBQlVN2017OqNPlJ3AMFHSGWGdYIZmcukCkSemi5pWfBuXKYZfBCWw5daKRD0VQlSkEpFVk1wjK9GuSrFjxGXlXWClnJ5l2ZYF0m2VIWW1cOusXYqCIqVRK1SGLC-S0QxaTkJt7mnPpU5sCNtxzVOAc2wTb4Kiaqhyi1XoRKrDWeOYpjD2EzcoxLtsNTP7F1gjc42U5JyspNK7YKa1pRE1RVzRXKVXKDfKBovN8_wBGlxOfdxEXXQwsisbbUW0MVaBHAVVMrnDzVa5w-fT01v6Kd-uia9rfPPCMT01wA5WZWWdY1DrKm08FopaQqiLu73-UgZJ4JMu-pln39n7Ntxz9ArH7LwbQnCWLSCQl7kG7WOt61wVWl1Deqtap-UMZSIi3S5O7aKUSiqqRY_DnzRmv_ayJfpj4XlvR-CTlfRkn12RWkZe0i8RL-sNOLygg4633TNv3itP5QKVu1sj7BMi6skTajNfD0emjmUz_2Q==">
    
answered by 21.05.2018 в 14:50