我的扩展程序可以从Google Chrome获取用户的电子邮件地址吗?

时间:2012-05-01 06:12:16

标签: google-chrome-extension

我有一个扩展,一些用户贡献金钱或努力。我希望能够通过他们的电子邮件地址识别这些用户,因此我可以显示“谢谢!”下次他们加载扩展程序。

有没有办法从谷歌浏览器获取用户的电子邮件地址?

2 个答案:

答案 0 :(得分:8)

好吧,让她解决了。这个网站基本上描述了它:

http://smus.com/oauth2-chrome-extensions/

但并非所有这些都在那里得到解释。所以:

首先,您需要API客户端ID和客户端密钥,以便用户可以授权您使用其详细信息。以下步骤将以一种可以使用chrome扩展名的方式设置它:

  1. Google API控制台
  2. 创建API
  3. 转到API访问
  4. 创建客户ID
  5. 为其命名和徽标,当要求用户授权您的应用程序检索其详细信息时,将显示此名称和徽标。下一步
  6. 选择Web应用程序
  7. 点击“更多”以获取URI和授权的javascript来源
  8. 将重定向URI设置为http://www.google.com/robots.txt
  9. 删除javascript originins字段,以便没有
  10. 单击“确定”或其他任何内容,将客户端ID和客户端密钥复制出来以供日后使用。
  11. 其次你需要oauth2 javascript库,这里有: https://github.com/borismus/oauth2-extensions/tree/master/lib

    您需要将其放在名为oauth2的文件夹中,与html文件位于同一目录中。

    在你的html文件中添加以下内容:

    <script type="text/javascript" src="oauth2/oauth2.js"></script>
    <script type="text/javascript">
    var googleAuth = new OAuth2('google', {
      client_id: ' $(YOUR CLIENT ID HERE) ',
      client_secret: ' $(YOUR CLIENT SECRET HERE) ',
      api_scope: 'https://www.googleapis.com/auth/userinfo.email'
    });
    
    googleAuth.authorize(function() {
      // We should now have googleAuth.getAccessToken() returning a valid token value for us 
      // Create an XMLHttpRequest to get the email address 
      var xhr = new XMLHttpRequest();
      xhr.onreadystatechange = function() { 
        if( xhr.readyState == 4 ) {
          if( xhr.status == 200 ) { 
            var parseResult = JSON.parse(xhr.responseText);
            // The email address is located naw: 
            var email = parseResult["email"];
          }
        }
      }
      // Open it up as GET, POST didn't work for me for the userinfo 
      xhr.open("GET","https://www.googleapis.com/oauth2/v1/userinfo",true);
      // Set the content & autherization 
      xhr.setRequestHeader('Content-Type', 'application/json');
      xhr.setRequestHeader('Authorization', "OAuth " + googleAuth.getAccessToken() );
      xhr.send(null);
      // Debugging stuff so we can see everything in the xhr.  Do not leave this in production code 
      console.log(xhr);
    });</script>
    

    在你的manifest.json中你需要:

    “权限”:[“https://accounts.google.com/o/oauth2/token”,“https://www.googleapis.com/oauth2/v1/userinfo”]

    同样在清单文件中,您需要:

    "content_scripts": [   {
        "matches": ["http://www.google.com/robots.txt*"],
        "js": ["oauth2/oauth2_inject.js"],
        "run_at": "document_start"   }
    

    那应该照顾它。

答案 1 :(得分:1)

我正在尝试自己做类似的事情。我正在尝试获取基于其Google帐户的ID,以便我可以为用户存储一些云数据。我相信您可以通过相同的方法获取电子邮件地址,但他们必须批准权限。如果我成功了,我会发布代码。现在我想要得到: http://smus.com/oauth2-chrome-extensions/

使用我自己的谷歌API密钥和那个。

到目前为止没有取得多大成功。花了最后两个小时实现了唯一具有良好文档的方法,它告诉我该功能已经过折旧。可能必须尝试让这个oauth2废话工作。