我已经在我的 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 等。
答案 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