Firebase 身份验证:身份验证期间未收到来自 FirebaseUser 的电子邮件

时间:2021-04-28 04:19:11

标签: android firebase kotlin firebase-authentication google-authentication

我已经在我的 Android 应用中使用 Google 实现了 Firebase 身份验证。当我尝试使用它登录时,我收到 null 作为来自 FirebaseUser 班级的电子邮件:

    private fun firebaseAuthWithGoogle(idToken: String) {
        val credential = GoogleAuthProvider.getCredential(idToken, null)
        auth.signInWithCredential(credential)
                .addOnCompleteListener(this) { task ->
                    if (task.isSuccessful) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success")
                        val user = auth.currentUser

                      if(user.email != null) {
                        sendUserDetailToServer()
                        updateUI(user)
                      }

                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.exception)
                        updateUI(null)
                    }
                }
    }

我可以获得其他详细信息,例如姓名、uid 等。

2 个答案:

答案 0 :(得分:1)

您需要将其存储在数据库 firebase auth 中而不返回,但您可以为此使用 admin sdk

admin.auth().getUser(uid)
admin.auth().getUserByEmail(email)
admin.auth().getUserByPhoneNumber(phoneNumber)  

答案 1 :(得分:0)

为了能够使用与经过身份验证的用户对应的 Gmail 地址,您需要从 authResult 获取它,并且从 FirebaseUser 对象中获取,因为它尚未更新。所以,而不是以下代码行:

val user = auth.currentUser

请使用:

val email = task.result?.user?.email