0

問題があり、その理由がわかりません。助けていただければ幸いです。

FacebookグラフAPIを使用するAndroidアプリを開発しています。読み取り権限「user_likes」を使用します。このリクエストを行うと、 「me/likes」すべてが正常に機能します。しかし、これを行うと: me/likes?fields=events{cover},name

OAuthExceptionが発生します。errorMessage: 現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります

結論は:

  1. 必要なすべてのアクセス許可を持つ有効なアクセス トークンを取得します。
  2. 私は自分のアプリの管理者なので、Facebook のプライバシー ポリシーは何の役割も果たしません。
  3. リクエスト

私/好き

動作しますが、

me/likes?fields=イベント

動作しません!

私が得る応答:

{応答: responseCode: 400、graphObject: null、エラー: {HttpStatus: 400、errorCode: 2500、errorType: OAuthException、errorMessage: 現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります。}、isFromCache:false}

だから私は自分のアクセストークンをデバッグしました:

発行: 1420803216 (4 時間前)

有効期限: 1425987216 (約 2 か月後)

有効: 真

起源: モバイル ウェブ Faceweb

スコープ: public_profile、basic_info、email、user_birthday、user_location、user_likes、user_friends


アクセス トークンに多くのスコープがある理由がよくわかりません。「user_likes」を設定しました!

loginBtn.setReadPermissions(Arrays.asList("user_likes"));

これは私のコードです:

 private LoginButton loginBtn;
    private TextView username;
    private UiLifecycleHelper uiHelper;

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

        uiHelper = new UiLifecycleHelper(this, statusCallback);
        uiHelper.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        username = (TextView) findViewById(R.id.username);
        loginBtn = (LoginButton) findViewById(R.id.fb_login_button);
        loginBtn.setReadPermissions(Arrays.asList("user_likes"));
        loginBtn.setUserInfoChangedCallback(new UserInfoChangedCallback() {
            public void onUserInfoFetched(GraphUser user) {
                if (user != null) {
                    username.setText("You are currently logged in as "
                            + user.getName());
                } else {
                    username.setText("You are not logged in.");
                }
            }
        });
    }

    private Session.StatusCallback statusCallback = new Session.StatusCallback() {
        public void call(Session session, SessionState state,
                Exception exception) {
            if (state.isOpened()) {
                Log.d("MainActivity", "Facebook session opened.");
            } else if (state.isClosed()) {
                Log.d("MainActivity", "Facebook session closed.");
            }
        }
    };

    @Override
    public void onResume() {
        super.onResume();
        Session session = Session.getActiveSession();
        if (session != null && (session.isOpened() || session.isClosed())) {
            onSessionStateChange(session, session.getState(), null);
        }
        uiHelper.onResume();
    }

    private void onSessionStateChange(final Session session,
            SessionState state, Exception exception) {

        if (state.isOpened()) {
            // userInfoTextView.setVisibility(View.VISIBLE);
            String token = session.getAccessToken();
            Log.d("SESSION_TOKEN", token);
            new Request(session, "me/likes?fields=events", null, HttpMethod.GET,
                    new Request.Callback() {
                        public void onCompleted(Response response) {
                            Log.i("INFO", response.toString());
                            // new
                            // GetResponses(userInfoTextView).execute(response);
                        }
                    }).executeAsync();

        } else if (state.isClosed()) {
            // userInfoTextView.setVisibility(View.INVISIBLE);
        }
    }

私は何を間違っていますか?私のセッションまたは許可リクエストに何か問題があると思います...誰かが私を助けてくれることを願っています!

よろしくクリストフ

4

2 に答える 2

2

これは、Android 用の Facebook SDK では、追加のパラメーターを として渡す必要があるためBundleです。

したがって、あなたの場合、次のように Graph オブジェクトを呼び出す必要があります。

Bundle bundle = new Bundle();
bundle.putString("fields", "events");

new GraphRequest(AccessToken.getCurrentAccessToken(), "me/likes", bundle, HttpMethod.GET, new GraphRequest.Callback() {
    public void onCompleted(GraphResponse response) {
        // Your stuff here
    }
}).executeAsync();
于 2015-07-26T19:56:08.457 に答える
1

API 呼び出しは正しいようで、API Explorer で機能します。エラーの唯一の論理的な説明は、アクセス トークンが無効であることです。

トークンをデバッガーに入れ、それが有効かどうか、および利用可能かどうかを確認しuser_likesます: https://developers.facebook.com/tools/debug/

于 2015-01-09T09:02:49.613 に答える