Chrome扩展程序电子邮件中的Google Oauth集成问题

时间:2019-02-12 11:57:19

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

我正在使用Google身份验证构建Chrome扩展程序。我在Google控制台中创建了应用,并获取了客户端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"
}

但是我没有在该回复中收到电子邮件地址。

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

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

如何允许cors?

1 个答案:

答案 0 :(得分:0)

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