我有一个在身份验证后返回这个的 api
"token_type":"Bearer",
"expires_in":86400,
"access_token":"XXXXXXXXX",
"refresh_token":"XXXXXXXXXXX"
我已成功将访问 token 、刷新 token 和 expires_in 保存在 sqlite 数据库中。我如何检查 token 是否已过期? 这是我目前所拥有的
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 值
最佳答案
我建议您使用 retrofit 等框架来帮助您管理身份验证,而无需在每个 API 调用中检查 expiresAt。
在 Retrofit 中,或者它的 HTTP 客户端 OkHttp。您可以使用专为刷新 token /自动登录场景设计的新 Authenticator API 来处理身份验证。您可以引用此链接了解实现细节 refreshing-oauth-token-using-retrofit-without-modifying-all-calls
每当您的 API 调用返回“401 unauthorized”响应时,它将触发身份验证器方法,运行您的刷新 token API 并使用新的访问 token 重新发送原始请求。
关于android - 检查访问 token 是否过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44103326/