检查访问令牌是否过期

Geo*_*e J 1 android

我有一个api,在验证后返回此信息

"token_type":"Bearer",
"expires_in":86400,
"access_token":"XXXXXXXXX",
"refresh_token":"XXXXXXXXXXX"
Run Code Online (Sandbox Code Playgroud)

我已经成功地在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();
        }
Run Code Online (Sandbox Code Playgroud)

expiresAt包含expires_in值

小智 6

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

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

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