我尝试以下方法尝试检查用户是否已获得授权,但我不太了解,我认为我检查错误。
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);
}
}
然而,这个工作正常,但每次刷新一个页面或打开一个新标签时它都会重新授权,我会弹出一个弹出窗口并在循环中关闭(我假设它& #39; s迭代我打开的每个标签?):
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>"
,我知道这是一个因素,因为我可以指定网址,并且只会弹出一次弹出窗口进行授权。
任何帮助都会很棒。
答案 0 :(得分:1)
我使用我的第一个例子改变了immediate: "true"
,现在一切都是
工作