首页 > 解决方案 > 如何在 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()
            }
        })
    }
}

标签: androidauthenticationkotlinsingle-sign-ongoogle-signin

解决方案


当您的用户登录时(第一次也是唯一一次),使用获得的令牌对您自己的后端服务器进行身份验证。无需在谷歌重新登录。此处的详细信息:https ://developers.google.com/identity/sign-in/android/backend-auth


推荐阅读