我有一个Chrome扩展,在清单中包含了驱动器API。在安装时,当用户打开Google文档时,后台。js弹出同意屏幕,以获得用户访问其谷歌硬盘的权限。
这在安装时工作良好。但是,如果用户将应用程序从驱动器中删除,代码不会再次弹出同意屏幕-它只会获取一个令牌,然后尝试驱动器,只会得到一个401错误。
我原以为如果授权不被授予,身份验证电话会突然同意。。。
显然,如果用户删除了你的应用程序,你不应该继续请求许可,这是必然的——我现在只想处理最简单的情况。
我的一些用户从未看到同意页面,或者看到并关闭了它...并且没有再次提示。
显示:
"oauth2": {
"client_id": "xxxxxxxxxx-smaehlat7c66p1ns6t90ssj3jmlrrecm.apps.googleusercontent.com",
"scopes": [
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/userinfo.profile",
"https://www.googleapis.com/auth/drive.readonly"
]
},
Background.js:
googleFileID = getIdFromUrl(activeURL);
chrome.identity.getAuthToken({ 'interactive': true }, function(token) {
console.log('In Chrome Identity and obtained token: ' + token);
$.ajax({
type: "GET",
beforeSend: function(request) {
request.setRequestHeader("Authorization", "Bearer " + token);
},
url: "https://www.googleapis.com/drive/v3/files/" + googleFileID + "?fields=owners",
dataType: 'json',
processData: true,
success: function(gDocsMeta1) {
// DO STUFF
GoogleAPI控制台:我已经设置了API,可以看到流量,尽管我的流量中有10%是错误,我认为这与上述问题有关。
我使用Google Firebase进行用户身份验证...虽然我的一些用户选择谷歌身份验证来创建帐户,但许多人使用电子邮件注册。这个问题困扰着两种类型的注册。
感谢您的帮助!
当您收到401错误作为响应时,您必须使用chrome从缓存中删除无效令牌。身份在调用
chrome之前,请删除cachedauthToken({token:oldToken})
。身份getAuthToken({interactive:true}…)代码>再次。