如何解决使用 Kotlin 使用 Firebase 登录 Google 中的 GetEmail() Null
首先,对不起,如果已经有一个帖子解决了我的问题,但我发现的那些没有解决它。
我正在使用电子邮件创建登录并通过(工作正常)加上使用谷歌登录,登录有效,但无论是在 Firebase 控制台还是在带有“account.email”的代码中,我都无法看到电子邮件。
binding.btGoogle.setonClickListener() {
val googleConfig: GoogleSignInoptions =
GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id)).build()
val googleClient: GoogleSignInClient = GoogleSignIn.getClient(this,googleConfig)
googleClient.signOut()
startActivityForResult(googleClient.signInIntent,GOOGLE_SIGN_IN)
}
override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) {
super.onActivityResult(requestCode,resultCode,data)
if (requestCode == GOOGLE_SIGN_IN) {
val task: Task<GoogleSignInAccount> = GoogleSignIn.getSignedInAccountFromIntent(data)
try {
val account: GoogleSignInAccount? = task.getResult(ApiException::class.java)
//here 'account.email' is already null
if (account != null) {
val credential: AuthCredential = GoogleAuthProvider.getCredential(
account.idToken,null
)
FirebaseAuth.getInstance().signInWithCredential(credential).addOnCompleteListener() {
if (it.isSuccessful) {
showHome(account.email ?: "",ProviderType.GOOGLE)
} else {
showAlert()
}
}
}
} catch (e: ApiException) {
showAlert()
}
}
}
调试中,我可以看到其他属性,如 displayName、givenname、idToken...但电子邮件只是 null。
我尝试过的解决方案:
困扰我的事情:
- 寻找答案我看到有些人提到他们 接受了阅读权限,我没有看到任何要求我做的弹出窗口
这是我在 stackoverflow 中的第一个问题,加上我的英语不是最好的...对不起,如果我做错了什么,提前谢谢你。
解决方法
我真是太笨了,我漏了一个字:)
我有这个:
val googleConfig: GoogleSignInOptions =
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.build()
我需要这个:
val googleConfig: GoogleSignInOptions =
GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。