【问题标题】:Google Oauth integration in Chrome extension email issueChrome 扩展电子邮件问题中的 Google Oauth 集成
【发布时间】:2023-03-25 22:19:01
【问题描述】:

我正在使用 Google 身份验证构建 Chrome 扩展程序。我在谷歌控制台中创建了应用程序并获取了客户端 ID。这包含在manifest.json 文件中。我需要获取经过身份验证的用户的电子邮件地址。

在脚本中,我使用以下代码获取用户详细信息。

chrome.identity.getAuthToken({
    interactive: true
}, function(token) {
    if (chrome.runtime.lastError) {
        alert(chrome.runtime.lastError.message);
        return;
    }
    var x = new XMLHttpRequest();

    x.open('GET', 'https://www.googleapis.com/oauth2/v2/userinfo?access_token=' + token+'&alt=json&prettyPrint=true');
    x.onload = function() {
    console.log(x.response);
    };
    x.withCredentials = false;
    x.send();
});

我收到的回复是:

{
  "id": "108585013132758765",
  "name": "Sankar",
  "given_name": "Sankar",
  "family_name": "Gowri",
  "link": "https://plus.google.com/108585013132758765",
  "picture": "xxxxxx",
  "gender": "male",
  "locale": "en"
}

但我没有收到此回复中的电子邮件地址。

如果我使用以下 url 获取跨源错误:

x.open('GET', 'https://www.googleapis.com/auth/userinfo.email?access_token=' + token+'&alt=json&prettyPrint=true');

如何允许cors?

【问题讨论】:

  • manifest.json 文件的oauth2 条目的scopes 部分中包含https://www.googleapis.com/auth/userinfo.email。您也可以尝试将identity.email 添加到permissions
  • @IvánNokonoko 尝试了您的建议,但仍未得到回应。

标签: google-chrome-extension oauth-2.0 google-api google-oauth


【解决方案1】:

为了让用户信息端点将用户的电子邮件地址返回给您。在对用户进行身份验证时,您必须已请求电子邮件范围。

【讨论】:

  • 添加了电子邮件范围。但是它不会来。
  • 我在 manifest.josn 文件和谷歌应用控制台中添加了范围
  • 请在您的问题中包含您的验证码。并确保您再次向该用户请求访问权限。您需要再次查看同意屏幕,以确保它被选中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-18
  • 2013-11-02
  • 2014-10-02
相关资源
最近更新 更多