FirebaseUI,指定在特定情况下要打开的特定活动(注册后)

问题描述 投票:1回答:2

我正在使用FirebaseUI for Auth来处理身份验证,我想要做的是指定一个特定的活动,如果用户已注册(首次登录),则打开,是否有可能实现此目的?

编辑:这是使用的FirebaseUi身份验证:

List<AuthUI.IdpConfig> providers = Arrays.asList(
                                    new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
                                    new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build());

                            startActivityForResult(
                                    AuthUI.getInstance()
                                            .createSignInIntentBuilder()
                                            .setIsSmartLockEnabled(false)
                                            .setAvailableProviders(providers)
                                            .setTheme(R.style.LoginTheme)
                                            .setLogo(R.drawable.ic_melomania_blue_light)
                                            .build(),
                                    RC_SIGN_IN);

onActivityResult

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == RC_SIGN_IN) {
            if (resultCode == RESULT_OK) {
                // Sign-in succeeded, set up the UI
                Toast.makeText(this, "Signed in!", Toast.LENGTH_SHORT).show();
                FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
            } else if (resultCode == RESULT_CANCELED) {
                // Sign in was canceled by the user, finish the activity
                Toast.makeText(this, "Sign in canceled", Toast.LENGTH_SHORT).show();
                finish();
            }
        }}
android firebase android-activity firebase-authentication firebaseui
2个回答
1
投票

我建议看看docs。以下是您如何处理活动响应的示例:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // RC_SIGN_IN is the request code you passed into startActivityForResult(...) when starting the sign in flow.
    if (requestCode == RC_SIGN_IN) {
        IdpResponse response = IdpResponse.fromResultIntent(data);

        // Successfully signed in
        if (resultCode == RESULT_OK) {
            startActivity(SignedInActivity.createIntent(this, response)); // <--- This is what you are looking for!
            finish();
        } else {
            // Sign in failed
            if (response == null) {
                // User pressed back button
                showSnackbar(R.string.sign_in_cancelled);
                return;
            }

            if (response.getError().getErrorCode() == ErrorCodes.NO_NETWORK) {
                showSnackbar(R.string.no_internet_connection);
                return;
            }

            showSnackbar(R.string.unknown_error);
            Log.e(TAG, "Sign-in error: ", response.getError());
        }
    }
}

要专门检查这是否是第一次使用,请查看this example

FirebaseUserMetadata metadata = auth.getCurrentUser().getMetadata();
if (metadata.getCreationTimestamp() == metadata.getLastSignInTimestamp()) {
    // The user is new, show them a fancy intro screen!
} else {
    // This is an existing user, show them a welcome back screen.
}

1
投票

要在用户在Firebase中注册后转到特定活动,您可以执行以下操作:

 auth.createUserWithEmailAndPassword(email, password)
                    .addOnCompleteListener(StudentSignUpActivity.this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            Toasty.info(getApplicationContext(), "creation of account was: " + task.isSuccessful(), Toast.LENGTH_SHORT).show();
                            if (task.isSuccessful()) {
                                startActivity(new Intent(CurrentActivity.this,ActivityYouWantToGoTo.class));
                                finish();

用户输入电子邮件和密码后,您可以使用上述方法对用户进行身份验证,如果成功,则会将用户重定向到您想要的活动,使用以下方法:

 startActivity(new Intent(CurrentActivity.this,ActivityYouWantToGoTo.class));

以上活动名称只是样本,您应该根据您的活动名称进行更改。

© www.soinside.com 2019 - 2024. All rights reserved.