gpt4 book ai didi

android - 如何检查用户是否在 Firebase 中通过身份验证?

转载 作者:行者123 更新时间:2023-11-29 23:45:47 26 4
gpt4 key购买 nike

我的应用程序中有几种注册方法,如下所示:

enter image description here

让我们围绕 Google 登录方法解决问题:
我正在做的是当用户登录时 enteringDataIntoUserNode() 方法在 signInWithCredential() 方法中被调用,例如:

    private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
AuthCredential credential =
GoogleAuthProvider.getCredential(acct.getIdToken(), null);

// signing in
mAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {

// entering default values in the database
enteringDataIntoUserNode();

Intent intent = new Intent(LoginAndSignupActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
else {
Log.w(TAG, "signInWithCredential:failure", task.getException());
}

}
});
}

enteringDataIntoUserNode()

private void enteringDataIntoUserNode() {
final String currentUid = mAuth.getCurrentUser().getUid();

//
String deviceToken = FirebaseInstanceId.getInstance().getToken();
final String userName = mAuth.getCurrentUser().getDisplayName();
String imageUrl = mAuth.getCurrentUser().getPhotoUrl().toString();
String userStatus = "Hi there! How is it going?";

// inserting data in key-value pair
usersReference.child(currentUid).child("user_name").setValue(userName);
usersReference.child(currentUid).child("user_status").setValue(userStatus);
usersReference.child(currentUid).child("user_image").setValue(imageUrl);
usersReference.child(currentUid).child("device_token").setValue(deviceToken);

// when this last value will be inserted then, making an intent to MainActivity
usersReference.child(currentUid).child("user_thumb_image").setValue(imageUrl)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Log.d(TAG, "onComplete: Data insertion for the new user is successful ");
}
}
});
}

enteringDataIntoUserNode() 方法只是在用户每次登录时将一些默认数据传递到数据库。但是如果用户更改其详细信息(如图像或用户名等)并注销并再次登录通过 Google 登录方法,然后再次调用 enteringDataIntoUserNode() 方法,用户详细信息将被默认信息覆盖。

我的问题是,在 Google 登录 期间,是否有任何方法可以检查用户是否是第一次登录,以便在后一种情况下我可以跳过调用 enteringDataIntoUserNode() 方法并防止覆盖数据。在 FacebookPhone Number 登录期间,我想实现同样的目标。

最佳答案

如果你检查用户是否是第一次登录,如果你想检查一个用户是否是新用户也是一样的。所以要解决这个问题,我们可以简单地调用 OnCompleteListener.onComplete 回调中的 isNewUser() 方法,如下所示:

OnCompleteListener<AuthResult> completeListener = new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
boolean isNewUser = task.getResult().getAdditionalUserInfo().isNewUser();
if (isNewUser) {
Log.d("TAG", "The user is new!");
} else {
Log.d("TAG", "The user is not new!");
}
}
}
};

更多信息,请查看 official documentation .

关于android - 如何检查用户是否在 Firebase 中通过身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51443538/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com