我正在开发一个自托管的chrome扩展程序,并按照here所述生成了密钥和client_id。我对getAuthToken的调用是(从答案复制到this question)
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/v1/userinfo?alt=json&access_token=' + token);
x.onload = function() {
alert(x.response);
};
x.send();
});
但是,我发现在用户被正确验证后,当用户被正确定向到谷歌登录页面时,我的回叫永远不会被称为。我的问题:我是否必须向Google注册我的应用程序(而不是使用自生成的密钥对,密钥和client_id)才能调用我的回调?对于在谷歌注册的测试应用程序,正确调用相同的回调。
我的清单文件有
"permissions": [
"background",
...
"identity",
"*://*/*"
],
"key" : "Long key here",
"oauth2" : {
"client_id" : "Id of length 32",
"scopes" : [
"https://www.googleapis.com/auth/plus.login"
]
}
谢谢。
答案 0 :(得分:4)
您使用了错误的client id
。
要生成有效的client id
:
转到https://console.developers.google.com并在凭据下创建client id
。还要确保您的产品具有可在同意屏幕下填写的名称。选择已安装的应用程序和Chrome Application
:
现在从chrome://extensions/
复制您的扩展程序ID,然后在detail/
之后粘贴它,然后点击创建客户端ID。将生成您的客户ID,现在将此客户ID复制并粘贴到您的manifest.json