没有为自托管chrome扩展调用chrome.identity.getAuthToken回调

时间:2015-07-29 07:20:31

标签: javascript google-chrome-extension google-oauth2

我正在开发一个自托管的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"
            ]
    }

谢谢。

1 个答案:

答案 0 :(得分:4)

您使用了错误的client id。 要生成有效的client id

转到https://console.developers.google.com并在凭据下创建client id。还要确保您的产品具有可在同意屏幕下填写的名称。选择已安装的应用程序和Chrome Application

enter image description here

现在从chrome://extensions/复制您的扩展程序ID,然后在detail/之后粘贴它,然后点击创建客户端ID。将生成您的客户ID,现在将此客户ID复制并粘贴到您的manifest.json