检查访问令牌是否过期

时间:2017-05-22 01:10:53

标签: android

我有一个api,在认证后返回此内容

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

我已在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值

1 个答案:

答案 0 :(得分:6)

我建议您使用诸如retrofit之类的框架来帮助您管理身份验证,而无需在每次单独的API调用中检查expiresAt。

在Retrofit或其HTTP客户端OkHttp中。您可以使用专为刷新令牌/自动登录方案设计的新Authenticator API来处理身份验证。您可以参考此链接了解实施细节refreshing-oauth-token-using-retrofit-without-modifying-all-calls

每当您的API调用返回" 401未授权"响应,它将触发authenticator方法,运行刷新令牌API并使用新的访问令牌重新发送原始请求。