GDrive App的实用程序类之一,即GDocs处理它如下:
- 获取令牌(使用chrome.identity.getAuthToken())。
- 使用该令牌发出请求。
- 如果请求失败,则从缓存中清除它(使用chrome.identity.removeCachedAuthToken())并请求一个新的。(它允许最多 1 次重试,因此如果问题不是令牌过期,它不会进入无限循环。)
编码:
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();