【发布时间】: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