Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取通过google登录的用户的firebase UID?_Java_Android_Firebase_Firebase Authentication - Fatal编程技术网

Java 如何获取通过google登录的用户的firebase UID?

Java 如何获取通过google登录的用户的firebase UID?,java,android,firebase,firebase-authentication,Java,Android,Firebase,Firebase Authentication,我正在尝试获取通过google登录的用户的UID 当我使用FirebaseAuth.getInstance().getCurrentUser().getUid()时,它显然显示错误 当我使用GoogleSignIn.getLastSignedAccount(getContext()).getId时,它显示的ID不正确 我怎么能把这个给他 有一个代码,我用谷歌登录。我从你那里得到的 如果没有用户登录,则.getCurrentUser()方法将返回null。 确保应用程序中有以下逻辑以防止崩溃: F

我正在尝试获取通过google登录的用户的UID

当我使用
FirebaseAuth.getInstance().getCurrentUser().getUid()
时,它显然显示错误

当我使用
GoogleSignIn.getLastSignedAccount(getContext()).getId时,它显示的ID不正确

我怎么能把这个给他

有一个代码,我用谷歌登录。我从你那里得到的


如果没有用户登录,则
.getCurrentUser()
方法将返回null。 确保应用程序中有以下逻辑以防止崩溃:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // User is signed in
    Log.d("TAG", user.getUid())
} else {
    // No user is signed in
}

无论使用哪种身份验证方法,获取UID的方法都保持不变。只要用户登录,就有一个UID。

您需要使用您的google登录令牌登录Firebase

FirebaseAuth.getInstance().signInWithCredential(GoogleAuthProvider.getCredential(googleSignInAccount.getIdToken(), null))

因为您的FirebaseUser和您的Google帐户使用的是两种不同的授权,因此不能互换使用。

正如Frank van Puffelen在评论中提到的,NPE的出现是因为没有用户登录。为了能够使用来自身份验证过程的UID,您应该始终检查空值。在科特林,它将只是:

FirebaseAuth.getInstance().currentUser?.apply {
    Log.d("TAG", it)
}

“它显然显示了错误。“您得到了什么错误?@FrankvanPuffelen java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String com.google.firebase.auth.FirebaseUser.getUid()”,这意味着在您进行调用时没有用户登录到firebase。从你分享的信息来看,不可能说出原因。我建议发布足够的最小上下文,以便我们重现问题。有关如何最大限度地利用他人提供帮助的机会的更多指导,请查看。@FrankvanPuffelen我现在添加了代码
firebaseUser.getUid()如何与设置
firebaseUser
的代码相关?我已经这样做了,但无论如何都是相同的错误
public void onComplete(@NonNull Task Task){if(Task.issusccessful()){>>>firebaseUser user=mAuth.getCurrentUser();startActivity(新意图(MainActivity.this,NavActivity.class));updateUI(user);}else{updateUI(null);}}
您可以打印此用户的uid吗?这应该是您看到的uid!您解决了问题吗?
FirebaseAuth.getInstance().signInWithCredential(GoogleAuthProvider.getCredential(googleSignInAccount.getIdToken(), null))
FirebaseAuth.getInstance().currentUser?.apply {
    Log.d("TAG", it)
}