1
votes

I'm using the Google Admin Directory Users endpoint to retrieve all the users in our company's domain. The request is working as expected and I'm receiving the full list of users.

But a large number of users are missing photos. The thumbnailPhotoUrl property is present on each user entry, but following the URL leads to

https://ssl.gstatic.com/s2/profiles/images/silhouette200.png

which is the default avatar, for a large number of our users.

However:

  • If I go into Inbox and send one of the users showing the default avatar an email, their profile pic appears when sending the email
  • And when the user logs in to our app using their company email (using Firebase Auth), their user response contains a public URL for their avatar
  • And if I log in to G Suite Admin and view our users, the majority of them have avatars. Only a small handful of users show the silhouette avatar.

Also, the docs state:

Note: In this version of the API, a photo is the user's latest Gmail Chat profile photo. This is different from the Google+ profile photo.

From the accounts we've viewed, all users have Gmail Chat/Hangout profile photos.

So it seems the users have photos associated with their account. Why are the photo URLs in the Google Admin Directory showing the default avatar? And not the user's uploaded photo?

2
Have you tried reaching out to the support team for this issue? - MαπμQμαπkγVπ.0
Yes, the docs recommend starting a support request on Stack Overflow. - Brett DeWoody
I recommend to reach out the G Suite Support Team and ask for the API Support Team. support.google.com/a/answer/1047213?hl=en - Morfinismo
I know I'm late to the party but check this out stackoverflow.com/a/62124006/5983596 - Morfinismo

2 Answers

1
votes

I ran into this today and found your question while trying to solve the problem. I think I have the answer!

The thumbnailPhotoUrl property in each of the user profiles that leads to silhouette200.png starts with https://www.google.com/s2/photos/private/ followed by a long id string.

On the other hand, any user profile that returns a valid photo (instead of redirecting to the default/anonymous photo) starts with https://www.google.com/s2/photos/public/ ... like my Google Apps/G Suite profile photo.

I discovered fairly quickly that if I am logged into my G Suite account in the browser where I try to view those thumbnail photos, they resolve as expected with actual photos instead of silhouette200.png.

So: to display G Suite user photos in a custom app, the app user needs to be logged in with a G Suite account that is authorized to read other G Suite domain users' private thumbnail photos

or

your app will need to proxy the photo request in order to return the actual thumbnail.

Of course, please do consider user privacy expectations and regulations; the fact that the profile photo is private usually indicates that the user did not set their own profile photo but had it set by some external application or sync process. (As far as I can tell, when a user sets their own profile photo using My Account or About Me, it is always made public.)

0
votes

Adding some documentation reference to help define the ultimate purpose. Google API part is here.

Parameter viewType() defines what part of the user profile is returned which in turn depends on GSuite Directory settings. This parameter also defines the level of authorization when using the Google API.

When using a third party app as defined here, more elements come into play. In the end, thumbnails appeared...