Javascript 在接收访问令牌之前需要运行getAuthToken两次,为什么?
我想我需要吃点阿司匹林。。。把我的头撞到墙上。。。三天了,还是一事无成。。。我就是不明白 通过Chrome扩展,我从background.js调用getAuthToken,它可能是有史以来编写的最基本的脚本:Javascript 在接收访问令牌之前需要运行getAuthToken两次,为什么?,javascript,google-chrome-extension,oauth-2.0,google-oauth,Javascript,Google Chrome Extension,Oauth 2.0,Google Oauth,我想我需要吃点阿司匹林。。。把我的头撞到墙上。。。三天了,还是一事无成。。。我就是不明白 通过Chrome扩展,我从background.js调用getAuthToken,它可能是有史以来编写的最基本的脚本: function getAuthToken(){ chrome.identity.getAuthToken( {'interactive': true}, function(token){
function getAuthToken(){
chrome.identity.getAuthToken(
{'interactive': true},
function(token){
console.log(token);
}
);
};
清单片段:
"content_security_policy": "script-src https://*.google.com 'unsafe-eval'; object-src 'self'",
"oauth2": {
"client_id": "<client_id>.apps.googleusercontent.com",
"scopes": ["https://www.googleapis.com/auth/gmail.modify"]
}
“内容安全策略”:“脚本src https://*.google.com'safe eval';对象src'self',
“oauth2”:{
“客户端id”:“.apps.googleusercontent.com”,
“范围”:[“https://www.googleapis.com/auth/gmail.modify"]
}
情况就是这样:
如果您遇到类似的问题,请与我分享,没有超过5行的代码太令人沮丧了。您如何在后台调用getAuthToken()?它是在jquery$(document).background.js中的ready函数上调用的,但我也尝试立即调用它,结果相同。为了测试,我禁用了步骤2验证,但问题仍然存在。一旦令牌缓存中有一个空的或过期的令牌,它就可以正常工作,只有在我必须访问GMail时才会出现。谢谢你的反馈。好的,我也试过这个例子,在这里它第一次加载失败,第二次加载后它得到了令牌。这可能是因为该扩展尚未发布,而是在本地运行的吗?我在另一台网络上的另一台计算机上尝试了整个过程,但问题并没有出现。第一次呼叫,收到令牌。问题发生在服务器2012R2上,工作的是Windows 7。很明显,我尝试过禁用防火墙(Sophos UTM)和病毒扫描程序(ESET),但没有成功。有什么想法吗?不确定是否有必要,但值得尝试将google URL添加到清单中的权限请求中(然后重新加载扩展以确保其生效):
“https://www.googleapis.com/", "https://accounts.google.com/“,”https://*.googleusercontent.com/“