2017-02-04 69 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); 

} 
相關問題