相关疑难解决方法(0)

首先使用Facebook进行身份验证然后使用Google导致Firebase for Android出现错误

据我在Firebase文档中了解,如果用户使用凭据对其帐户进行身份验证,则如果凭据尚未与其他凭据相关联,则应使用相同的凭据严格登录.

换句话说,如果我使用Google登录创建帐户,然后(退出后)尝试使用与Google凭据相同的电子邮件登录Facebook凭据,我应该在logcat中看到此异常:

"已存在具有相同电子邮件地址但登录凭据不同的帐户.请使用与此电子邮件地址关联的提供商登录."

是的,我毫不奇怪地得到了这个例外.但是,如果我使用Facebook创建帐户,然后尝试使用Google凭据登录,则此帐户(Facebook)的提供商将转换为Google.此时身份验证不会失败,但不是预期的结果.我想以某种方式将每个用户与特定凭据相关联.我该怎么解决这个问题?你可以看到下面的代码:

public class SignInActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener,
        View.OnClickListener {

    private static final String TAG = "SignInActivity";
    private static final int RC_SIGN_IN = 9001;

    private GoogleApiClient mGoogleApiClient;
    private FirebaseAuth mFirebaseAuth;
    private FirebaseAuth.AuthStateListener mFirebaseAuthListener;

    private CallbackManager mCallbackManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_sign_in);

        // Facebook Login
        FacebookSdk.sdkInitialize(getApplicationContext());
        mCallbackManager = CallbackManager.Factory.create();

        LoginButton mFacebookSignInButton = (LoginButton) findViewById(R.id.facebook_login_button);
        mFacebookSignInButton.setReadPermissions("email", "public_profile");

        mFacebookSignInButton.registerCallback(mCallbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Log.d(TAG, "facebook:onSuccess:" + loginResult);
                firebaseAuthWithFacebook(loginResult.getAccessToken());
            }

            @Override …
Run Code Online (Sandbox Code Playgroud)

android google-authentication facebook-login firebase firebase-authentication

26
推荐指数
5
解决办法
1万
查看次数