Поиск URL-адреса изображения профиля Google, когда пользователь вошел в систему с помощью OpenID-провайдера Google.
Есть ли способ найти изображение профиля пользователя, который вошел в систему, используя свою учетную запись Google (через OpenID).
Я проверил stackru и похоже, что они используют сервис gravatar для назначения аватара на адрес электронной почты. но должно быть возможно получить изображение профиля пользователя Google непосредственно из Google.
какая-нибудь подсказка?
4 ответа
Это невозможно только с помощью OpenId. У вас есть два решения:
Вы используете не изображение Google, но изображение, предоставленное третьей стороной, такой как Gravatar (это самый простой способ, который используется в Stackru);
Вы используете API профилей Служб Google: см. Там, чтобы получить фотографию. В этом случае пользователь должен пройти аутентификацию, например, с помощью протокола Oauth: см. Документацию Google там. Если вы выберете это решение, я полагаю, что вы продолжите использовать OpenId, поэтому вы будете использовать и OpenId, и Oauth. Google поддерживает гибридный протокол для упрощения этого процесса: гибридный протокол OpenId + OAuth.
Надеюсь, поможет...
ОБНОВЛЕНО: в настоящее время этот подход не работает
В настоящее время я использую этот подход:
- попробуйте загрузить http://profiles.google.com/s2/photos/profile/me?sz=32(sz - размер изображения)
- если загрузка не удалась, используйте фиктивный значок Google
Я также заметил, что если после показа аватара я захожу в другой аккаунт Google, изображение аватара все еще старое. Чтобы избежать этого, я добавляю "&cache_fix=" к URL-адресу изображения.
$(".social_avatar") .load(function() { $(".social_avatar").css('visibility', 'visible'); }) .error(function() { $(".social_avatar").attr('src', "/dummy_google_icon.png"); }) .css('visibility', 'hidden') .attr("src", "http://profiles.google.com/s2/photos/profile/me?sz=32&cache_fix=<userid>");
РЕДАКТИРОВАТЬ: Это больше не будет работать, потому что Google Buzz прекращен, я держал ответ здесь только для исторических целей.
https://www.googleapis.com/buzz/v1/people/[your google account name]/@self
Получает файл XML. Затем вы можете получить содержимое тега
Обратите внимание, что пользователь должен войти в систему, чтобы это работало.
Надеюсь это поможет
Существует http://www.avatarapi.com/ API, который возвращает имя пользователя и фотографию профиля с адреса электронной почты на основе общедоступной информации Google.
Его можно вызвать через SOAP или HTTP в этой конечной точке API: http://www.avatarapi.com/avatar.asmx
Одним из преимуществ этого API является то, что он не требует аутентификации пользователя в Google, однако в вашем случае вы сказали, что пользователь уже вошел в систему, так что это может не относиться к вам.