1

Google での認証後oauth2.loginaccess_tokenexpires_in. トークンの有効期限が切れるまで、すべてが順調に進んでいます。有効期限が切れた後、そのような古いトークンでデータのリクエストを再度送信すると:

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')}
})

成功に取り組み、トークンの有効期限が切れた場合は何も与えません。インターネット全体で、有効期限を処理する方法の明確な例を見つけることができませんか? 3600 秒カウントして old_token を削除する必要がありますか、またはトークンの有効期限エラーを処理するエレガントな方法はありますか?

4

1 に答える 1

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 );
});

ここにフィドルがあります:http://jsfiddle.net/MFe9d/

于 2012-07-04T13:32:19.200 に答える