2

Facebook を Android アプリケーションに統合しています。ユーザーが初めてログインしたときに、requestFacebookPermissions(session) メソッドを使用して publish_actions 権限を要求しています。しかし、このメソッドを呼び出すたびに、以下の例外が発生します...

java.lang.UnsupportedOperationException: Session: an attempt was made to request new permissions for a session that has a pending request. 

保留中の他のリクエストはありません。他の内部リクエストである可能性がありますが、この例外を取得せずにアクセス許可をリクエストするにはどうすればよいですか? 他のリクエストが完了するまで待たなければならない場合は問題ありませんが、保留中のリクエストが完了するかどうかを取得する方法がわかりません。

private void requestFacebookPermissions(Session session) {

        if (session != null && session.getState().isOpened()) {
            List<String> permissions = session.getPermissions();

            Log.i("Facebook", "Permissions Count: " + permissions.size());

            for (String string : permissions) {
                Log.i("FacebookPermissions", string);
            }

            if (!permissions.containsAll(PERMISSIONS)) {
                try {
                    session.requestNewPublishPermissions(new Session.NewPermissionsRequest(FacebookActivity.this, PERMISSIONS));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } else {
            return;
        }
    }
4

1 に答える 1

1

ログイン後に公開許可を求める

これは私のコードです

public class FacebookAccount extends FragmentActivity {
    private UserSettingsFragment userSettingsFragment;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.facebook_login);

        FragmentManager fragmentManager = getSupportFragmentManager();
        userSettingsFragment = (UserSettingsFragment) fragmentManager
                .findFragmentById(R.id.login_fragment);

        userSettingsFragment.setReadPermissions(Utility.READ_PERMISSIONS);

        userSettingsFragment
                .setSessionStatusCallback(new Session.StatusCallback() {
                    @Override
                    public void call(Session session, SessionState state,
                            Exception exception) {
                        if (state == SessionState.OPENED
                                && !session.getPermissions().containsAll(
                                        Utility.PUBLISH_PERMISSIONS)) {
                            session.requestNewPublishPermissions(new Session.NewPermissionsRequest(
                                    FacebookAccount.this,
                                    Utility.PUBLISH_PERMISSIONS));
                        }
                        if (session.isOpened()
                                && state == SessionState.OPENED_TOKEN_UPDATED) {
                            ....Save session access token
                        }
                    }
                });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (userSettingsFragment != null)
            userSettingsFragment
                    .onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }

}
于 2013-06-22T02:21:38.803 に答える