我按照这里的教程https://developer.chrome.com/apps/app_identity使用api https://developer.chrome.com/apps/identity,但没有运气。任何人都可以指出这段代码有什么问题吗?
function onGoogleLibraryLoaded() {
var redirect_uri = chrome.identity.getRedirectURL("http://qqibrow.github.io");
var full_url = "https://stackexchange.com/oauth/dialog?client_id=4716&redirect_uri=" + redirect_uri;
console.log(redirect_uri);
console.log(full_url);
chrome.identity.launchWebAuthFlow({
'url': full_url,
'interactive': true
}, authorizationCallback);
}
var authorizationCallback = function (data) {
// should print out redirect_uri with auth_token if succeed.
console.log(data);
};
// manifest.json
// ...
"permissions": [
"activeTab",
"identity",
"https://ajax.googleapis.com/",
"https://stackexchange.com/*",
"https://stackexchange.com/oauth/*",
"http://qqibrow.github.io/*"
],
"web_accessible_resources": [
"http://qqibrow.github.io/*",
"https://stackexchange.com/*",
],
// ...
如果我尝试https://stackexchange.com/oauth/dialog?client_id=4716&redirect_uri=http://qqibrow.github.io它确实有效。但是使用上面的代码,我总是从stackexchange得到一个错误页面,说:
Application Login Failure error description: Cannot return to provided redirect_uri.
答案 0 :(得分:2)
这是chrome.identity.getRedirectURL()
的创意用法。
它不允许您重定向到任意域;您可以提供路径,但elements
的域名为chrome.identity
。
因此,您的通话会返回https://<app-id>.chromiumapp.org
,这不是有效的网址,而您的身份验证失败。
我建议您重新阅读launchWebAuthFlow
documentation。