0

私はコードを実行しようとしていますが、ユーザーが許可を受け入れた後にのみ、スコアの送信ボタンと流れるコードを押します。

アプリケーションを初めて実行すると、ユーザーはエラーを受け入れて取得し、最初のクリック後に正常に動作します。

ユーザーが許可のクリックと他のコードを受け入れるのを同期するにはどうすればよいですか?

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);
    }
}
4

1 に答える 1

1

session.requestNewPublishPermissions 呼び出しは非同期です。つまり、返されたときにまだユーザーにアクセス許可を要求していないため、最初の呼び出しでは、後続の要求は失敗します。

これを行う正しい方法は、コールバックを NewPermissionsRequest に追加し (NewPermissionsRequest の javadoc を参照してください。setCallback メソッドがあるはずです)、Request コードをコールバックに移動します。

于 2013-04-08T20:20:37.557 に答える