2013-04-06 80 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方法),并将您的请求代码移到回调中。