android - 检查访问 token 是否过期

标签 android

我有一个在身份验证后返回这个的 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/

相关文章:

android - 底部导航+抽屉+广告

android - Executor 的 Runnable 中的变量

android - 无法在 root 的 android 手机上打开数据目录

java - 安卓猜数字游戏?如何在用户正确时更改随机数?

java - 如何解决android.database.sqlite.SQLiteException : no such column: ttd (code 1)

java - 音频延迟-Java程序到Android程序

android - 错误 : "Version code not found in manifest."

java - libgdx 没有找到类。如何修复错误?

java - 使用服务时 MediaPlayer 无法开始播放?

java - BottomNavigationView 后退按钮无法正常工作