我有一个Chrome扩展程序,在清单中包含Drive API。在安装时,当用户打开Google文档时,background.js会弹出同意屏幕以获得用户访问其Google云端硬盘的权限。
这在安装时工作正常。但是,如果用户从驱动器中删除了应用程序,则代码不会再次弹出同意屏幕 - 它只会获取一个令牌并尝试仅驱动器获取401错误。
如果没有授权,我会认为auth电话会弹出同意......
显然,如果用户删除了您的应用,您不应该继续寻求许可 - 我现在只是想处理最简单的情况。
我的一些用户从未看过同意页面,或者看过它并关闭它......并且不会再次提示。
清单:
"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
Google API控制台: 我已经设置了API并且可以查看流量,但我的流量中有10%是错误,我将其归因于上述问题。
我使用Google Firebase进行用户身份验证......如果相关的话。虽然我的一些用户选择使用Google身份验证来创建帐户,但许多用户都使用电子邮件注册。这个问题困扰着两种类型的注册。
任何帮助表示赞赏!
答案 0 :(得分:0)
当您收到401错误作为回复时,您必须先使用chrome.identity.removeCachedAuthToken({token:oldToken})
从缓存中删除无效令牌,然后再次调用chrome.identity.getAuthToken({interactive: true} ...)
。