2017-05-22 34 views
0

我有一個認證檢查訪問令牌過期

"token_type":"Bearer", 
"expires_in":86400, 
"access_token":"XXXXXXXXX", 
"refresh_token":"XXXXXXXXXXX" 

我已經成功地保存了訪問令牌後,返回此一個api,刷新標記和SQLite數據庫的expires_in。我如何檢查令牌是否過期? 這裏是我迄今爲止

if(new Date().after(expiresAt)){ 
      Toast.makeText(this, "Token expired", Toast.LENGTH_SHORT).show(); 
     }else{ 
      Toast.makeText(this, "You still have time", Toast.LENGTH_SHORT).show(); 
     } 

expiresAt包含expires_in值

回答

2

我會建議你使用的框架,如改裝,以幫助您管理身份驗證,而不在每一個API調用檢查expiresAt。

在Retrofit或其HTTP客戶端OkHttp。您可以使用專門爲您的刷新令牌/自動登錄場景設計的新的Authenticator API來處理身份驗證。您可以參考此鏈接獲取實施細節refreshing-oauth-token-using-retrofit-without-modifying-all-calls

每當您的API調用返回「401未授權」響應時,它將觸發authenticator方法,運行刷新令牌API並使用新的訪問令牌重新發送原始請求。