我已经按照https://developers.google.com/identity/sign-in/android/sign-in上的指南,我可以在用户登录后获得登录用户的Google ID令牌。但令牌将在1小时内过期。
我如何在旧的Google ID令牌过期后刷新有效的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()
}
})
}
}
型
2条答案
按热度按时间wfveoks01#
当您的用户登录时(第一次也是唯一一次),使用获得的令牌向您自己的后端服务器进行身份验证。无需在Google的重新登录。详情请点击:https://developers.google.com/identity/sign-in/android/backend-auth
tvmytwxo2#
默认情况下,访问令牌的有效期为1小时,这似乎足以授权检索登录用户的数据。一旦令牌通过后端服务器的验证,必须在后端为用户建立会话。用户登录后每次进入应用程序时,没有必要重复获取访问令牌。访问令牌的主要目的是token用于验证用户与Google服务器之间的关系。