2013-04-06 40 views
0

我試圖做一個代碼,但只有在用戶接受權限 他按發送得分按鈕和流動的代碼。Facebook權限接受後繼續

第一次運行appliaction用戶接受並得到錯誤,第一次點擊後它工作正常。

我該如何同步用戶接受權限點擊和其他代碼?

public void post_Score(View view){ 
    this.textView = (TextView) findViewById(R.id.editText1); 
    //request Publish Permissions 
    requestPublishPermissions(Session.getActiveSession()); 
    Bundle fbParams = new Bundle(); 
    randomScore = new Random().nextInt(1000000); 
    fbParams.putString("score", "" + randomScore); 
    Request postScoreRequest = new Request(Session.getActiveSession(),"me/scores",fbParams,HttpMethod.POST,new Request.Callback() { 

     @Override 
     public void onCompleted(Response response) { 
      FacebookRequestError error = response.getError(); 
      if (error != null) { 
       System.out.println("BAD"); 
       textView.setText("BAD " + error.getErrorMessage()); 

      } else { 
       System.out.println("Your score is " + randomScore); 
       textView.setText("Your score is " + randomScore); 
       savingUserDetails(); 
      } 
     } 
    }); 
    Request.executeBatchAsync(postScoreRequest); 
} 

而且requestPublishPermissions功能

private void requestPublishPermissions(Session session) { 
    if (session != null && !session.getPermissions().contains("publish_actions")) { 
     System.out.println("SEESION Permission"); 
     Session.NewPermissionsRequest newPermissionsRequest = new Session.NewPermissionsRequest(mainFragment, Arrays.asList("publish_actions")); 
     session.requestNewPublishPermissions(newPermissionsRequest); 
    } 
} 

回答

1

的session.requestNewPublishPermissions調用是異步的,這意味着當它返回時,它並沒有要求的權限,用戶還,所以在第一時間通過,您的後續請求將失敗。

正確的方法是將回調添加到NewPermissionsRequest(請參閱NewPermissionsRequest的javadocs,應該有一個setCallback方法),並將您的請求代碼移到回調中。