【问题标题】:Load Gmail API in new tab without re-authorising | Chrome Extension无需重新授权即可在新标签中加载 Gmail API | Chrome 扩展程序
【发布时间】:2018-03-09 03:13:11
【问题描述】:

我正在尝试以下方法来尝试检查用户是否已获得授权,但我对此理解不够,并且我认为我正在检查错误的内容。

Background.js

var SCOPE = ['https://www.googleapis.com/auth/gmail.readonly'];

function tryAuth() {
    chrome.cookies.get({url:'https://accounts.google.com', name:'LSID'}, function(cookie) {
        var clientId = "xxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com";
        if (cookie) {
            gapi.client.init('gmail', 'v1',{
                client_id: clientId,
                scope: SCOPE,
                immediate: 'false'
            });

        }else{
            console.log("trying oauth");
            var configString = {
                client_id: clientId,
                scope: SCOPE,
                immediate: 'false'
            };

           return gapi.auth.authorize(configString, handleAuthResult);
        }
    });
}

function handleAuthResult(authResult) {
    console.log("AUTH RESULT!!");
    console.log(authResult);
    if (authResult && !authResult.error) {
        var access_token = authResult.access_token;
        gapi.client.load('gmail', 'v1', gmailAPILoaded);
    }
}

这个,但是,工作正常,但每次刷新页面或打开新标签时它都会重新授权,并且我会在循环中打开和关闭一个弹出窗口(我假设它是遍历我打开的每个选项卡?):

function tryAuth() {
    var clientId = "xxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com";
    console.log("trying oauth");
        var configString = {
            client_id: clientId,
            scope: SCOPE,
            immediate: 'false'
        };
    return gapi.auth.authorize(configString, handleAuthResult);
}

我还在清单中使用"matches":"<all_urls>",我知道这是一个促成因素,因为我可以指定 URL,并且它只会闪烁一次弹出窗口以进行授权。

任何帮助都会很棒。

【问题讨论】:

  • edit 成为主题的问题:包括一个minimal reproducible example 重复问题。对于 Chrome 扩展程序或 Firefox WebExtensions,您几乎总是需要包含您的 manifest.json 和一些背景、内容和/或弹出脚本/HTML,通常是网页 HTML/脚本。寻求调试帮助的问题(“为什么我的代码没有按我想要的方式工作?”)必须包括:(1)期望的行为,(2)特定的问题或错误以及(3)重现它所需的最短代码在问题本身中。另请参阅:What topics can I ask about here?How to Ask
  • 其余代码在保密协议下,我不能发布。令人惊讶的是,上面的代码足以让某人理解我在做什么,最终对于 Upwork 上的 Chrome 扩展开发人员来说也是如此。

标签: javascript google-chrome-extension gmail-api


【解决方案1】:

我使用第一个示例更改了immediate: "true",现在一切正常 工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-24
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2018-04-30
    相关资源
    最近更新 更多