2016-12-02 34 views
1

我注册了Google。然后我注销并尝试使用与Facebook相同的电子邮件地址登录。正如我所料,用户已经注册了错误。当我收到错误信息时,我向linkWithCredantials提供了我从Facebook获得的方法的凭证。当然,我也得到了getCurrentUser这里的空错误,因为任何用户登录。我不明白,我什么时候会链接auth提供程序?而我的情况下,我想链接auth提供商与登出。可能吗?我们可以在没有用户登录的情况下将验证提供商链接到Android版的Firebase:

对话:对不起,我的英语。

这是我的例子:

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()) { 

           } 
          } 
         }); 
      } 
     } 
    }); 

} 

回答

相关问题