2016-12-02 6 views
1

私はGoogleに登録しました。その後、ログアウトしてFacebookと同じメールアドレスを使用してログインしようとしました。私が予想したように、ユーザーはすでにエラーを登録しています。私がエラーを受け取ったとき、私はFacebookから得たlinkWithCredantialsメソッドに資格を与えました。もちろん私も持っていますgetCurrentUserログインしているユーザーは誰もいないので、ここではnullエラーです。認証プロバイダをいつリンクすればいいですか?そして、私の場合、認証プロバイダをログインなしでリンクしたいのです。出来ますか?私たちは、Android用のFirebaseでユーザーログインなしで認証プロバイダをリンクできます

P .:私の英語には申し訳ありません。ここで

は私の例である:

private void handleFacebookAccessToken(final AccessToken token) { 

    Log.d(TAG_FACEBOOK, "handleFacebookAccessToken:" + token); 

    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken()); 
    final AuthCredential linkCredential = credential; 

    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() { 

       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        Log.d(TAG_FACEBOOK, "signInWithCredential:onComplete:" + task.isSuccessful()); 

        if (task.isSuccessful()) { 
         replaceFragment(new ProfileFragment()); 
        } else { 
         toast("Facebook authentication failed."); 
        } 

       } 
      }).addOnFailureListener(getActivity(), new OnFailureListener() { 

     @Override 
     public void onFailure(@NonNull Exception e) { 

      if (e.getMessage().contains("account already exists")) { 


       //**here** 
       mAuth.getCurrentUser().linkWithCredential(linkCredential) 
         .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() { 
          @Override 
          public void onComplete(@NonNull Task<AuthResult> task) { 
           Log.d(TAG_FACEBOOK, "linkWithCredential:onComplete:" + task.isSuccessful()); 

           if (!task.isSuccessful()) { 

           } 
          } 
         }); 
      } 
     } 
    }); 

} 

答えて

0

2つのアカウントをリンクするには、ユーザーが両方のアカウントにサインインする必要があります。したがって、彼らはすでにアカウントの1つとしてサインインしています。それはFirebase Authentication's currently signed in userです。次に、別のアカウントをこのアカウントにリンクするには、そのアカウントの資格情報を入力します。

関連する問題