如何获得gmail用户的头像?

Kog*_*ise 7 javascript gmail google-api avatar gmail-api

我正在使用Gmail API在React中创建基于电子邮件的应用程序.我正在加载一堆消息,我想显示发件人的头像.

我正在使用这个包来显示头像.我想拥有Google ID或图片网址.能够获得其他流行服务的图像也很好,例如Outlook和Yahoo邮件.

其他人也提出了同样的问题,但所有答案似乎都使​​用了Picasa API(已弃用)或Google+ API(将弃用).

编辑:是的,该react-avatar软件包声称它可以根据提供的用户数据找到一个头像,但它与电子邮件的所有功能都是找到一个很多人没有的Gravatar.

DaI*_*mTo 7

您无法通过GMAIL API或任何其他Google API进行操作

您无法通过任何Google API终端获取Google电子邮件地址并搜索与该电子邮件地址关联的图片或任何其他个人资料信息.说明如下.

获取电子邮件发件人的图片

Gmail API会列出已发送给用户和由用户发送的电子邮件.gmail API基本上以MIME格式返回邮件服务器电子邮件响应,如果您检查不包含配置文件图像.它并没有回报给你一个发件人或reciever的形象.

Google没有端点供开发人员用于搜索gmail.com电子邮件地址并返回任何用户个人资料信息(包括图片),这将违反用户隐私.用户必须授予您查看其图像的权限,并且您不具有可能向经过身份验证的用户发送电子邮件的每个Gmail用户的权限.

gmail网站可能会对gmail电子邮件地址进行某种检查,并将图片附在帐户上.Google可以访问所有GMAIL用户的个人资料数据,谷歌无法为您提供与用户隐私相同的访问权限.如果它不是Gmail帐户,他们可能会检查Gravatar以查看是否已为此电子邮件地址设置了图像.再次,您无法使用他们的电子邮件地址请求Google用户的图像.

  • 您可以查看Gravatar以查看是否已为该电子邮件设置了一个
  • 如果经过身份验证的用户已将此用户添加为联系人并为此用户添加了图片,则可以使用People api.

在过去,我向用户推荐,作为图像,他们使用用户电子邮件地址的第一个字母,并使用该字母创建图像.您可能还想使用一个问号,这实际上是gmail在其网站无法通过检查Gravatar从用户找到电子邮件时所做的事情.

在此输入图像描述

获取当前已验证用户的图像

您可以从people.get端点获取此信息,只需确保在对其进行身份验证时从用户请求了配置文件范围

GET https://people.googleapis.com/v1/people/me
Run Code Online (Sandbox Code Playgroud)

它返回一个包含用户配置文件信息的大响应,其中包含用户图片

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

人员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.');
           }
         });
      }
Run Code Online (Sandbox Code Playgroud)

  • 我不需要当前用户的个人资料图片,我想根据某人的电子邮件地址获取个人资料图片。我正在显示电子邮件列表,并且我想显示他们的头像。 (3认同)

小智 5

当前接受的答案并不完全正确,因为绝对有一个 Google API 可以公开 Gmail 头像 - 以及用户的名字和/或姓氏,只要用户已公开配置。

尽管到目前为止我还无法找到可用于实现此目的的实际 API 端点,但我确实遇到了avatarapi.com

正如他们的网站上所述:

此 API 使用 Google 通过公开的 Google 数据源提供的公开个人资料信息来确定用户的姓名和个人资料图片。

他们有一个后备方案 Gravatar。我也很想知道他们使用的这个“Google 数据源”位于哪里。

  • 这是行不通的。我用我的 Gmail 地址尝试了一下,得到的只是一张剪影图像。 (5认同)