如何区分使用firebase signinintentbuilder时登录和注册的用户? https://github.com/firebase/FirebaseUI-Android/blob/master/auth/src/main/java/com/firebase/ui/auth/AuthUI.java
解决方法是在注册时存储用户的UID,但是如果在启动signinintentbuilder时用户对象为null,我如何存储UID?
这是启动signinintentbuilder的代码:'
if(FirebaseAuth.getInstance().getCurrentUser() == null) {
// Start sign in/sign up activity
startActivityForResult(
AuthUI.getInstance()
.createSignInIntentBuilder()
.build(),
SIGN_IN_REQUEST_CODE
);
} else {
// User is already signed in. Therefore, display
// a welcome Toast
Toast.makeText(this,
"Welcome " + FirebaseAuth.getInstance()
.getCurrentUser()
.getDisplayName(),
Toast.LENGTH_LONG)
.show();
}'
非常感谢任何人的建议吧!
答案 0 :(得分:0)
以下是我的工作方式:当firebase用户界面流程结束时,我注册" firebase数据库中的用户以及当用户注销并按下例如" google登录"我检查firebase db中是否存在当前的uid。如果是执行的操作是"登录"如果不是,那就是"注册"
答案 1 :(得分:0)
您可以使用onAuthStateChanged侦听器,始终在用户注册或登录时调用它。
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
// User is signed in
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getEmail());
presenter.saveLocationtoken(FirebaseInstanceId.getInstance().getToken(),
user.getUid(),
user.getEmail(),
setRoleOnCreateUser(user));
userSignedInListener.updateNavHeader(firebaseAuth);
getFragmentManager().popBackStack(); // end of auth flow
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
// userSignedInListener.updateNavHeader(firebaseAuth);
}
}
即使您在每次登录时都更新了UID,它仍然有效,因为在一段时间后,某个用户的firebase注册令牌可能会更改。