【问题标题】:How to get the unique user ID in a chrome extension using OAuth?如何使用 OAuth 在 chrome 扩展中获取唯一用户 ID?
【发布时间】:2016-10-09 20:08:00
【问题描述】:

我在清单文件和 JavaScript 代码中使用 identity 权限,我使用 chrome.identity.getAuthToken({ 'interactive': true }, function( token ) 来获取使用标识令牌。

如何获得唯一的用户 ID 或电子邮件地址?最好不要添加新权限。

【问题讨论】:

    标签: javascript json google-chrome-extension oauth


    【解决方案1】:

    您可以使用 chrome.identity.getProfileUserInfo() 来获取电子邮件地址和唯一 ID。您将需要添加identity.email 权限(除了identity)。它不需要 OAuth2 令牌(甚至不需要网络连接)。

    这是一个将这些信息打印到后台页面控制台的最小扩展:

    manifest.json

    {
      "manifest_version" : 2,
    
      "name" : "Identity Test",
      "version" : "0.1",
    
      "background": {
        "scripts": ["background.js"]
      },
    
      "permissions": [
        "identity",
        "identity.email"
      ]
    }
    

    background.js

    chrome.identity.getProfileUserInfo(function(userInfo) {
      console.log(JSON.stringify(userInfo));
    });
    

    您可以改为通过使用 OAuth2 令牌调用 Google API 来获取用户信息。我相信您需要同时设置 profileemail 范围。如果您使用Google API Client library,您可以拨打gapi.client.oauth2.userinfo.get()。这更严格地满足您的问题的字母,它指定使用 OAuth 并且不希望添加权限,但我猜 chrome.identity.getProfileUserInfo() 是您真正想要的。

    【讨论】:

    • 注意:这仅在用户登录到 chrome 内部的配置文件时才有效,否则响应将为空。但仍然 +1,因为这最接近 Chrome 中真正的唯一 ID。
    • 你可以添加一个检查 if is = ""
    【解决方案2】:

    如果没有额外的权限,它将取决于您在 manifest.json 文件中声明的oauth2 scopes

    例如,如果您声明了任何 Google Drive 范围,则可以使用 Google Drive 的 About GET 方法(参见 here)来检索用户的 id 和电子邮件,其中 other data

    【讨论】:

      猜你喜欢
      • 2015-03-17
      • 2014-07-12
      • 2015-08-15
      • 1970-01-01
      • 2012-01-30
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      相关资源
      最近更新 更多