Android - 如何区分登录和注册firebase signinintent构建器的用户?

时间:2017-05-02 15:11:49

标签: android firebase firebase-authentication

如何区分使用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();
    }'

非常感谢任何人的建议吧!

2 个答案:

答案 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注册令牌可能会更改。