【发布时间】: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