通过Google oauth2.login
获取access_token
和expires_in
进行身份验证后。 Everithing一直很好,直到我的令牌到期。到期后,当我再次发送带有旧令牌的数据请求时:
var URLHead = 'https://www.google.com/fusiontables/api/query?sql='
var URLTable = encodeURI('SELECT id,COUNT() FROM TABLE_ID')
var URLTail = '&access_token='+ old_token +'&jsonCallback=?'
var queryURL = URLHead + URLTable + URLTail
var jqxhr = $.ajax({
type: "GET",
url: queryURL,
dataType: 'jsonp',
success: function (d) {
var max = d.table.rows[0].toString().substr(1)
localStorage.setItem('cpage', Math.ceil(max / localStorage.getItem('delimeter')))
},
error: function(){alert('token_expired')}
})
致力于成功,如果令牌过期则不提供任何内容。整个互联网都无法找到如何处理到期的明确例子? Shouold我算自己3600秒并删除old_token还是有任何优雅的方法来处理令牌过期错误?
答案 0 :(得分:0)
令牌过期时的响应是什么样的? API不一定会抛出错误,只是一个普通的JSON响应。响应可能包含一些内容,表示令牌已过期,因此您可以使用它来进行动态检查。
尝试:
success: function (d) {
if(d.error){
if(d.error == 'invalid_token'){
alert('invalid_token');
}
} else {
// local storage etc
}
}
或(有错误处理):
var request = $.ajax({
url: "https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=1/fFBGRNJru1FQd44Az%20%E2%80%8BqT3Zg",
type: "GET",
});
request.done(function(msg) {
// complete
});
request.fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});