Поиск 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.

Надеюсь, поможет...

ОБНОВЛЕНО: в настоящее время этот подход не работает

В настоящее время я использую этот подход:

  1. попробуйте загрузить http://profiles.google.com/s2/photos/profile/me?sz=32(sz - размер изображения)
  2. если загрузка не удалась, используйте фиктивный значок Google
  3. Я также заметил, что если после показа аватара я захожу в другой аккаунт 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. Затем вы можете получить содержимое тега , который, в свою очередь, является URL-адресом миниатюры профиля.

Обратите внимание, что пользователь должен войти в систему, чтобы это работало.

Надеюсь это поможет

Существует http://www.avatarapi.com/ API, который возвращает имя пользователя и фотографию профиля с адреса электронной почты на основе общедоступной информации Google.

Его можно вызвать через SOAP или HTTP в этой конечной точке API: http://www.avatarapi.com/avatar.asmx

Одним из преимуществ этого API является то, что он не требует аутентификации пользователя в Google, однако в вашем случае вы сказали, что пользователь уже вошел в систему, так что это может не относиться к вам.

Другие вопросы по тегам