2017-02-04 72 views
0

执行facebook登录权限,那次执行无限循环为什么,我不明白。我按照给定的步骤在facebook devloper一侧执行,我的代码在下面给出。Facebook的Sdk登录,Android中的无限循环,如何解决它?

mFacebookCallbackManager = CallbackManager.Factory.create(); 
fbLoginButton = (LoginButton) findViewById(R.id.fbLoginButton); 
fbLoginButton.setPublishPermissions(PrefrennceList.FB_PUBLISH_PERMISSION); 

fbLoginButton.registerCallback(mFacebookCallbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      AccessToken accessToken = loginResult.getAccessToken(); 

      Utility.storeString(mPreferences, PrefrennceList.FB_ACCESSTOKEN, loginResult.getAccessToken().getToken()); 
      Utility.storeString(mPreferences, PrefrennceList.FB_USER_ID, loginResult.getAccessToken().getUserId()); 

      LoginManager.getInstance().logInWithReadPermissions(SocialLoginActivity.this, PrefrennceList.FB_READ_PERMISSION); 

      return; 
     } 

     @Override 
     public void onCancel() { 

     } 

     @Override 
     public void onError(FacebookException error) { 
      error.printStackTrace(); 
     } 
    }); 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
     mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data); 

} 

回答

0

您已在onSuccess()回调中添加logInWithReadPermissions()方法。删除并添加之前如下

mFacebookCallbackManager = CallbackManager.Factory.create(); 
fbLoginButton = (LoginButton) findViewById(R.id.fbLoginButton); 
fbLoginButton.setPublishPermissions(PrefrennceList.FB_PUBLISH_PERMISSION); 

LoginManager.getInstance().logInWithReadPermissions(SocialLoginActivity.this, PrefrennceList.FB_READ_PERMISSION); 

fbLoginButton.registerCallback(mFacebookCallbackManager, new FacebookCallback<LoginResult>() { 
    @Override 
    public void onSuccess(LoginResult loginResult) { 

     AccessToken accessToken = loginResult.getAccessToken(); 

     Utility.storeString(mPreferences, PrefrennceList.FB_ACCESSTOKEN, loginResult.getAccessToken().getToken()); 
     Utility.storeString(mPreferences, PrefrennceList.FB_USER_ID, loginResult.getAccessToken().getUserId()) 
     return; 
    } 

    @Override 
    public void onCancel() { 

    } 

    @Override 
    public void onError(FacebookException error) { 
     error.printStackTrace(); 
    } 
}); 


@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    mFacebookCallbackManager.onActivityResult(requestCode, resultCode, data); 

} 
相关问题