代码之家  ›  专栏  ›  技术社区  ›  Kognise

如何为gmail用户获得头像?

  •  3
  • Kognise  · 技术社区  · 6 年前

    我正在用gmailapi创建一个基于电子邮件的应用程序。我正在加载一堆消息,我想显示发送者的化身。

    我在用 this package 显示化身。我想要一个谷歌Id或者一个图片url。如果能够为其他流行的服务(如Outlook和Yahoo mail)获取图像,那也会很好。

    其他人也问过同样的问题,但所有的答案似乎都使用了picasaapi(不推荐使用)或Google+API(不推荐使用)。

    是的,那个 react-avatar 该软件包声称,它可以根据提供的用户数据找到一个头像,但它所做的所有电子邮件是找到一个Gravatar,许多人没有。

    3 回复  |  直到 6 年前
        1
  •  11
  •   Linda Lawton - DaImTo    6 年前

    你想做的是不可能通过gmailapi或任何其他googleapi实现的

    您不能通过任何googleapi端点获取Google电子邮件地址并搜索与该电子邮件地址相关联的图像或任何其他个人配置文件信息。解释如下。

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

    gmailapi列出了用户发送的电子邮件。gmailapi基本上是以MIME格式返回邮件服务器的电子邮件响应,如果您选中它,它将不包含配置文件图像。是的

    谷歌没有供开发者搜索gmail.com电子邮件地址并返回任何用户资料信息(包括图片)的端点,这将侵犯用户隐私。用户必须授予您查看其图像的权限,而您并没有为每个可能向您的认证用户发送电子邮件的gmail用户授予该权限。

    gmail网站可能会对gmail的电子邮件地址进行某种检查,并将图片附在帐户上。谷歌可以访问所有GMAIL用户的个人资料,谷歌不能给你同样的访问权限,因为这会侵犯用户的隐私。如果不是gmail帐户,他们可能会检查 Gravatar 查看是否为此电子邮件地址设置了图像。同样,你也没有办法使用谷歌用户的电子邮件地址来请求他们的图片。

    • 你可以查一下Gravatar,看看有没有为那封邮件设置了一个
    • 如果经过身份验证的用户已将此用户添加为联系人并为此用户添加了图片,则您可以使用 People api .

    enter image description here

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

    你可以从 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
          }
        }
      ], 
    

    的官方示例项目 people 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.');
               }
             });
          }
    
        2
  •  4
  •   Bledi Deda    6 年前

    您必须为每个用户创建一个配置文件,并且当用户通过googleoauth在您的平台上注册时,只需获取一次配置文件图像 检查此信息 https://developers.google.com/actions/identity/google-sign-in-oauth

        3
  •  2
  •   Jerre    5 年前

    尽管到目前为止我还没有找到可以用来实现这一点的实际API端点,但我确实遇到了一些问题 avatarapi.com .

    如其网站所述:

        4
  •  -1
  •   fedeghe    6 年前

    你需要先得到邮件的md5,然后

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

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

        5
  •  -1
  •   Christoph Bimminger    6 年前

    如果你想用用户的图片创建一个头像,你可以使用“pipl.com”(人物搜索)的API。看到了吗 https://pipl.com/api/ . 您可以搜索特定的电子邮件地址。

    在“社会”和“商业”定价模型中,结果都包含一个图像数组。您可以用一个免费试用帐户(30个查询)来测试这一点。

    考虑一下,在前30次免费查询之后,您需要创建一个付费账户;他们的网页上有定价信息。