Как получить аватар для пользователя gmail?

Я создаю приложение для электронной почты в React с помощью Gmail API. Я загружаю кучу сообщений и хочу отобразить аватары отправителей.

Я использую этот пакет для отображения аватаров. Я хотел бы иметь идентификатор Google или URL-адрес изображения. Также было бы неплохо иметь возможность получать изображения для других популярных сервисов, таких как Outlook и почта Yahoo.

Другие люди задавали этот же вопрос, но во всех ответах либо используется API Picasa (который устарел), либо API Google+ (который будет устаревшим).

EDIT: Да, пакет react-avatar утверждает, что может найти аватар на основе предоставленных пользовательских данных, но все, что он делает с электронной почтой, — это находит Gravatar, которого нет у многих людей.


person Kognise    schedule 07.02.2019    source источник
comment
Может быть, вы можете использовать аутентификацию Firebase?   -  person NoobTW    schedule 10.02.2019
comment
@NoobTW Нет, спасибо. Я бы предпочел использовать старый добрый Gmail API, тем более что мы многое создали на его основе. Кроме того, поддерживает ли Firebase Auth API Gmail? Я всегда думал, что это только для входа в систему.   -  person Kognise    schedule 10.02.2019
comment
Не даст ли это вам то, что вы хотите: developers.google .com/admin-sdk/directory/v1/reference/users/   -  person Lance Whatley    schedule 12.02.2019
comment
@LanceWhatley Я считаю, что API ограничен поиском пользователей определенного домена G Suite.   -  person cody    schedule 12.02.2019
comment
@cody Да, я так думаю.   -  person Kognise    schedule 12.02.2019
comment
Раньше он был доступен через API Google+, но был отключен из соображений безопасности. См.: blog.google/technology/safety-security/project-strobe Не существует анонимного способа   -  person David Bray    schedule 15.02.2019


Ответы (5)


То, что вы хотите сделать, невозможно с помощью API GMAIL или любого другого API Google

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

Получить изображение отправителя электронного письма

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

У Google нет конечной точки, которую разработчики могли бы использовать для поиска по адресу электронной почты gmail.com и возврата любой информации о профиле пользователя (включая изображение), что было бы нарушением конфиденциальности пользователей. Пользователь должен будет предоставить вам разрешение на просмотр своего изображения, и у вас нет такого разрешения для каждого пользователя Gmail, который может отправлять электронные письма вашему аутентифицированному пользователю.

Веб-сайт gmail, вероятно, проверяет адреса электронной почты gmail и прикрепляет изображение к учетной записи. Google имеет доступ к данным профилей всех пользователей GMAIL, Google не может предоставить вам такой же доступ, как это было бы нарушением конфиденциальности пользователей. Если это не учетная запись Gmail, они могут проверить Gravatar, чтобы узнать, настроено ли изображение для этого адреса электронной почты. Опять же, у вас нет возможности запросить изображение пользователя Google, используя его адрес электронной почты.

  • Вы можете проверить Gravatar, чтобы узнать, был ли он настроен для этого письма.
  • Если аутентифицированный пользователь добавил этого пользователя в качестве контакта и добавил изображение для этого пользователя, вы можете использовать API пользователей.

В прошлом я рекомендовал пользователям, чтобы в качестве изображения они брали первую букву адреса электронной почты пользователя и создавали изображение, используя эту букву. Вы также можете использовать вопросительный знак, который на самом деле делает gmail, когда его веб-сайт не может найти электронное письмо от пользователя, возможно, проверив Gravatar.

введите описание изображения здесь

Получить образ текущего аутентифицированного пользователя

Вы можете получить эту информацию из конечной точки people.get. убедитесь, что вы запросили область профиля у пользователя при его аутентификации

GET https://people.googleapis.com/v1/people/me

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

"photos": [
    {
      "url": "https://lh3.googleusercontent.com/a-/AAuE7mDuIWqXzrrp-65cIhXSD2HjCI8WYsWHR0fDx5_wQPY=s100", 
      "metadata": {
        "source": {
          "type": "PROFILE", 
          "id": "117200475532672775346"
        }, 
        "primary": true
      }
    }
  ], 

Официальный образец проекта для API для людей содержит информацию о том, как подключиться к API. Просто не забудьте добавить область «профиль»

Код для получения изображения должен быть примерно таким.

function getPicture() {
        gapi.client.people.people.get({
           'resourceName': 'people/me',
           'pageSize': 10,
           'personFields': 'photos',
         }).then(function(response) {
           var connections = response.result.connections;
           appendPre('Connections:');

           if (connections.length > 0) {
             for (i = 0; i < connections.length; i++) {
               var person = connections[i];
               if (person.url && person.url.length > 0) {
                 appendPre(person.names[0].url)
               } else {
                 appendPre("No display name found for connection.");
               }
             }
           } else {
             appendPre('No connections found.');
           }
         });
      }
person DaImTo    schedule 12.02.2019
comment
Мне не нужна фотография профиля текущего пользователя, я хочу получить фотографию профиля на основе чьего-то адреса электронной почты. Я показываю список электронных писем и хочу отображать их аватары. - person Kognise; 12.02.2019
comment
Пробовали пройти через Gravatar api? Google предоставит вам информацию только о текущем аутентифицированном пользователе. - person DaImTo; 13.02.2019
comment
Да, у меня есть. На самом деле не так много результатов. Кроме того, если да, то как Gmail получает аватары? - person Kognise; 14.02.2019
comment
Как я уже сказал, нет никакого способа получить аватары gmail случайного пользователя. прочтите раздел Получить изображение отправителя электронного письма - person DaImTo; 14.02.2019
comment
Не могли бы -1 прокомментировать. Подробное объяснение того, почему что-то невозможно, на самом деле не является веской причиной для -1 IMO. - person DaImTo; 14.02.2019
comment
Это не совсем то, что я искал, но, похоже, это единственное решение. Спасибо за ваше время. - person Kognise; 18.02.2019
comment
К сожалению, не все возможно, когда вы имеете дело с конфиденциальностью пользователей. Даже то, что на тот момент казалось очень простой вещью и отличной идеей. - person DaImTo; 18.02.2019

Я не думаю, что Google делится этой информацией с кем-либо без разрешения. Вы должны создать профиль для каждого пользователя и использовать изображение профиля только один раз, когда пользователь регистрируется на вашей платформе с помощью Google oauth. Проверьте эту информацию https://developers.google.com/actions/identity/google.-sign-in-oauth

person Bledi Deda    schedule 15.02.2019

Принятый в настоящее время ответ не совсем правильный, поскольку абсолютно точно существует API Google, который предоставляет аватары Gmail, а также имя и/или фамилию пользователя, если пользователь настроил их публично.

Хотя мне до сих пор не удалось найти настоящую конечную точку API, которую можно использовать для достижения этой цели, я наткнулся на avatarapi.com< /а>.

Как указано на их сайте:

Этот API использует общедоступную информацию профиля, предоставленную Google, через общедоступный источник данных Google, чтобы определить имя и изображение профиля пользователя.

У них есть откат к Gravatar. Я также хотел бы узнать, где находится этот «источник данных Google», который они используют.

person Jerre    schedule 15.08.2019
comment
Это не работает. Я попробовал это с моим адресом Gmail, и все, что я получил, было изображением силуэта. - person FractalBob; 15.06.2020

Сначала вам нужно получить md5 электронной почты, а затем

var email = "[email protected]",
    size = 80; 
yourImg.src = 'http://www.gravatar.com/avatar/' + MD5(email) + '.jpg?s=' + size;

https://jsfiddle.net/a4g8s5y2/1/

person fedeghe    schedule 15.02.2019
comment
сори... я думал это просто про граватары - person fedeghe; 15.02.2019
comment
Вот полезный ресурс, ссылка! - person Pedro Ferreira; 28.06.2021

Если вы хотите создать аватар с изображением пользователя, вы можете использовать API от «pipl.com» (поиск людей). См. https://pipl.com/api/. Вы можете искать определенный адрес электронной почты.

Как в социальной, так и в бизнес-модели ценообразования результат содержит массив изображений. Вы можете проверить это с помощью бесплатной пробной учетной записи (30 запросов).

учтите, после первых 30 бесплатных запросов вам необходимо создать платный аккаунт; информация о ценах доступна на их веб-странице.

person Christoph Bimminger    schedule 16.02.2019