android - 如何在 1 小时内过期后获取有效的 Google ID 令牌
问题描述
我已按照https://developers.google.com/identity/sign-in/android/sign-in上的指南进行操作,在用户登录后我可以获取已登录用户的 Google ID 令牌。但令牌会1 小时后到期。
如何在旧令牌过期后刷新有效的 Google ID 令牌,而无需用户一次又一次地手动登录?我尝试在令牌过期时使用静默登录。但这似乎不起作用。有没有办法获得有效的 Google ID 令牌?提前致谢!!
第一次登录,
private fun handleSignInResult(completedTask: Task<GoogleSignInAccount>) {
try {
val account = completedTask.getResult(ApiException::class.java)
val idToken = account!!.idToken
CheckDB(this, db).execute()
} catch (e: ApiException) {
Log.e("TAG","signInResult:failed code=" + e.statusCode)
}
}
当令牌过期时,我正在使用静默登录
override fun onStart() {
super.onStart()
val account = GoogleSignIn.getLastSignedInAccount(this)
if(account!=null) {
sign_in_button.visibility = GONE
mGoogleSignInClient!!.silentSignIn().addOnCompleteListener(this, object : OnCompleteListener<GoogleSignInAccount>{
override fun onComplete(p0: Task<GoogleSignInAccount>) {
val account = p0.getResult(ApiException::class.java)
CheckDB(this@SignInActivity, db).execute()
}
})
}
}
解决方案
当您的用户登录时(第一次也是唯一一次),使用获得的令牌对您自己的后端服务器进行身份验证。无需在谷歌重新登录。此处的详细信息:https ://developers.google.com/identity/sign-in/android/backend-auth
推荐阅读
- android - 从数据库的数据中填充列表
- php - 如何保持会话 fb api 图以避免(#4)应用程序请求限制达到
- c - 用文件的内容填充字符串数组
- javascript - “未捕获的语法错误:意外的标记:”在“x:element.position().get(x)”中
- python - 尝试打开多个浏览器不断收到错误脚本无法运行
- sql - SQL 创建函数在返回部分出错
- php - 如何将数值添加到值而不在php中添加或减去它
- reactjs - 带有 React 路由的 EventHandler
- sql - 如何尽可能透明地将现有 Postgres 表迁移到分区表?
- c# - == 是否总是对 SQL 中的二进制文件执行 SequenceEqual()?