我的扩展程序的onInstall挂钩调用chrome.identity.getAuthToken()。如果这是我第一次运行应用程序,那么一切正常。
我遇到的问题是,在测试期间,我正在撤消访问权限,然后重新安装扩展程序。在这种情况下,getAuthToken()返回缓存的无效标记。一段时间后,当我尝试使用扩展时,我的扩展程序失败了401。我想要做的是检测扩展来自缓存,并立即删除它,以便我可以进行身份验证对话。如果我可以访问令牌到期时间,我可以推断其有效性,但是afaik,到期时间是不可见的。
有关如何编写代码的任何建议吗?
答案 0 :(得分:2)
GDocs 的其中一个实用程序类,即 GDrive App ,按如下方式处理:
代码:
GDocs.prototype.upload = function (blob, callback, retry) {
var onComplete = function (response) {...}.bind(this);
var onError = function (response) {
if (retry) {
// `removeCachedAuthToekn()` uses `chrome.identity.removeCachedAuthToken()`
// to remove the token from cache and then requests a new one using
// `chrome.identity.getAuthToken()`. Finally, it calls `upload()` again
// passing the `retry` parameter with value `false` */
this.removeCachedAuthToken(...);
} else {
// The failure is permanent...
}
}.bind(this);
...
uploader = ...
...
uploader.upload();