为什么 Firebase 在 Google Play 身份验证成功后返回“null”帐户?
class MyActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
[...]
val activity = this
val gso = GoogleSignInOptions
.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN)
.requestServerAuthCode("<some-id>.apps.googleusercontent.com")
.build()
val signInClient = GoogleSignIn.getClient(activity, gso)
val acc = GoogleSignIn.getLastSignedInAccount(activity) // This is null
val currentUser = Firebase.auth.currentUser // This is null
signInClient.silentSignIn().addOnCompleteListener(activity) { task ->
if (task.isSuccessful) {
val account = task.result // This is com.google.android.gms.auth.api.signin.GoogleSignInAccount@123456
account.displayName // This is null
account.id // This is null
Firebase.auth.currentUser // Still null
}
}
}
}
根据文档,如果触发“isSuccessful”,用户 ID 永远不应该为“null”:https://firebase.google.com/docs/auth/android/play-games
尝试使用这个:
val user = FirebaseAuth.getInstance().currentUser
而不是:
Firebase.auth.currentUser