4

FacebookグラフAPIで、ユーザーの通知を受け取るリクエストに対して何も返されないという問題があります。同じ構文を使用してユーザーのニュースフィードを取得し、バッチリクエストを介して実行していますが、ニュースフィードリクエストは正常に機能します。「manage_notifications」権限も有効にしています。通知へのグラフ呼び出しの結果を解析しようとすると、コードで常にnullポインター例外が発生します。

インターネットブラウザでグラフエクスプローラにアクセスして「me/notifys?include_read = true」と入力すると、適切なデータが取得されることに注意してください。

これが私のリクエストのコードです。

static Request notificationsRequest = Request.newGraphPathRequest(fbSession, "me/notifications?include_read=true", new Request.Callback() {

    @Override
    public void onCompleted(Response response) {
        GraphObject object = response.getGraphObject();
        if(object != null){
            notifications = object.getProperty("data").toString();
        }
        else{
            notifications = "Notifications returns null";
        }

    }
});

何か案は?ありがとう。

編集:コードを更新したところ、GraphObjectオブジェクトがnullを返していることがわかりました。そのため、そこから何も解析できません。グラフリクエストに何か問題があるようですが、それが何であるかわかりません。私が言ったように、ユーザーのニュースフィード(「私/家」)を取得するためのまったく同じ方法は完全にうまく機能します。

4

2 に答える 2

6

グラフパスでパラメーターを渡す代わりに、パラメーターとしてリクエストに追加します。

me / Notifications?include_read = true

static Request notificationsRequest = Request.newGraphPathRequest(fbSession, "me/notifications", new Request.Callback() {

    @Override
    public void onCompleted(Response response) {
        GraphObject object = response.getGraphObject();
        if(object != null){
            notifications = object.getProperty("data").toString();
        }
        else{
            notifications = "Notifications returns null";
        }

    }
});


Bundle params = new Bundle();
params.putString("include_read", "true");

notificationsRequest.setParameters(params);
于 2012-12-19T20:58:36.890 に答える
0

私は別の方法を見つけました。誰かが役に立ったと思った場合に備えて投稿します

    private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    if (state.isOpened()) {
        InboxMessage.setVisibility(View.VISIBLE);

        new Request(session,"/me/notifications", null,HttpMethod.GET,new Request.Callback() {

                    public void onCompleted(Response response) {
                        GraphObject object = response.getGraphObject();
                            if (object != null) {
                                InboxMessage.setText(object.getProperty("data").toString());
                            } else {
                                InboxMessage.setText("Notifications returns null");
                            }
                    }
                }
            ).executeAsync();
    } else {
        InboxMessage.setVisibility(View.INVISIBLE);
        Log.i(TAG, "Logged out...");
    }
}
于 2014-07-23T21:14:25.380 に答える