错误"无法返回提供的redirect_uri"在使用stackapp auth 2.0的chrome扩展中

时间:2015-05-01 14:50:36

标签: google-chrome google-chrome-extension google-chrome-app

我按照这里的教程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.

1 个答案:

答案 0 :(得分:2)

这是chrome.identity.getRedirectURL()的创意用法。

它不允许您重定向到任意域;您可以提供路径,但elements的域名为chrome.identity

因此,您的通话会返回https://<app-id>.chromiumapp.org,这不是有效的网址,而您的身份验证失败。

我建议您重新阅读launchWebAuthFlow documentation