如何使用FirebaseUI在Android上进行帐户链接?

时间:2018-08-01 20:17:27

标签: android firebase firebase-authentication firebaseui

我在Android应用程序中使用Firebase身份验证。 我可以使用他们的Gmail ID或电话号码登录用户。 如果用户已经使用电子邮件ID或ISE登录,我想链接电话号码。 我提到了Firebase Auth documentation for account linking,但他们是手动完成的(手动获取电话号码和OTP)。但是在FirebaseUI的main page上是这样写的

  

帐户链接-用于跨身份提供者安全链接用户帐户的流。

作为其功能之一。但是没有提到如何使用FirebaseUI进行帐户链接。

这是我到目前为止所做的:

我正在使用这三个功能来登录用户。

public void signInWithAllProviders() {
    List<AuthUI.IdpConfig> providers = Arrays.asList(
            new AuthUI.IdpConfig.EmailBuilder().build(),
            new AuthUI.IdpConfig.PhoneBuilder().build(),
            new AuthUI.IdpConfig.GoogleBuilder().build(),
            new AuthUI.IdpConfig.FacebookBuilder().build());
    startActivityForResult(
            AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setAvailableProviders(providers)
                    .build(),
            RC_SIGN_IN);
}

public void signInWithPhone() {
    startActivityForResult(
            AuthUI.getInstance().
                    createSignInIntentBuilder().
                    setAvailableProviders(Collections.singletonList(new AuthUI.IdpConfig.PhoneBuilder().build())).
                    build(),
            RC_PHONE_SIGN_IN);
}

public void signInWithEmail() {
    startActivityForResult(
            AuthUI.getInstance().
                    createSignInIntentBuilder().
                    setAvailableProviders(Arrays.asList(
                            new AuthUI.IdpConfig.GoogleBuilder().build(),
                            new AuthUI.IdpConfig.EmailBuilder().build())).
                    build(),
            RC_EMAIL_SIGN_IN);
}
  

当用户已经登录时,他尝试使用   通过拨打signInWithPhone()来拨打电话号码,FirebaseUI取代了   先前登录的凭据。因此,我无法关联帐户。

我想念什么吗?

1 个答案:

答案 0 :(得分:1)

FirebaseUI处理自动帐户链接(启用每封电子邮件一个帐户时)。这涵盖了以下类似情况:

  • 用户通过一台设备注册Google。
  • 用户尝试使用同一Google电子邮件通过Facebook登录另一台设备上的同一应用程序,或者在注销后尝试使用同一电子邮件。
  • 通常,这将引发一个错误,要求进行链接,因为已经存在使用相同电子邮件的经过验证的帐户。
  • 为了恢复,FirebaseUI要求用户使用Google登录到现有帐户,然后将Facebook凭据链接到该帐户。用户下次尝试登录时,可以使用其Google帐户或Facebook帐户。

FirebaseUI将支持上述情况,但不支持您尝试将电话号码链接到已登录用户的手动链接。随时在FirebaseUI存储库中提出功能请求。