-1

これは私の最初の投稿なので、気楽に行ってください :)

Facebook SDK を Android アプリケーションに統合しています。ユーザーがログインした後、Facebookでのアプリの最後の投稿を彼に見せたいので、(グラフオブジェクトとして)それを取得しようとしています:

Bundle params = new Bundle();
params.putInt("limit", 1);

Request request = new Request(session, inRequestId + "/posts/?limit=1&access_token=" +
session.getAccessToken().toString(), params, HttpMethod.GET, new Request.Callback() {
    @Override
    public void onCompleted(Response response) {
        if(response != null){
            if(response.getError() != null)
                Toast.makeText(getActivity(), "Error retrieveng last post", Toast.LENGTH_SHORT).show();
        else {
                updateFacebookView( response.getGraphObject().getInnerJSONObject() );
        }
    }
    }
});
request.executeAsync();

これはうまくいくと思いますが、graphPath の limit=1 パラメータ (inRequestId + "/posts/?access_token=" + session.getAccessToken().toString()) なしで作成しようとしている場合、制限はありません。 bundle param "limit" を (文字列として、またはテストされた int として) 入れないと、次のエラーが表示されます。

09-30 17:51:47.094: E/caca(19703): {HttpStatus: 400, errorCode: 190, errorType: 
OAuthException, errorMessage: Malformed access token
CAAT76i2gxTgBAKyLzc8SI6y7V1pGJ0fmbLWCtuKdhHIEZAQBA0jYx4YqZB8IgRDJMUlw1XrvZCLJ8kxKdZCRG3LNbrVL8fB34ZBlyvlqadT192MCWMkst1lMSdFwtRVPWiSNfBfi8Gq2RHZCWskrBVTjAwPDKyDMGLSU8sPnXfe0r2tsZBdZCXLCOJGQtE76sJkr7n8SdOU4j1KopkvT0Mux7QBGf7ZBXtCRqDnsZAZCxSNHAZDZD?access_token=CAAT76i2gxTgBAKyLzc8SI6y7V1pGJ0fmbLWCtuKdhHIEZAQBA0jYx4YqZB8IgRDJMUlw1XrvZCLJ8kxKdZCRG3LNbrVL8fB34ZBlyvlqadT192MCWMkst1lMSdFwtRVPWiSNfBfi8Gq2RHZCWskrBVTjAwPDKyDMGLSU8sPnXfe0r2tsZBdZCXLCOJGQtE76sJkr7n8SdOU4j1KopkvT0Mux7QBGf7ZBXtCRqDnsZAZCxSNHAZDZD}

これを正しく使用していないのですか、それともバグですか? 前もって感謝します

4

1 に答える 1

0

コンストラクターの 2 番目のパラメーターは、要求の「パス」ですが、要求パラメーターもパスに入れているため、Request クラスが代わりに入れようとする可能性のある他のパラメーターと干渉します。やるべきことがいくつかあります:

  1. パス パラメータにリクエスト パラメータを入れないでください。「params」バンドルに貼り付けてください。
  2. アクセス トークンを配置しないでください (Request クラスはセッション オブジェクトから自動的に取得します)。

次のようなことを試してください:

Bundle params = new Bundle();
params.putInt("limit", 1);

Request request = new Request(session, inRequestId + "/posts", params, HttpMethod.GET, new Request.Callback() {
    ...
});
request.executeAsync();
于 2013-09-30T22:30:13.753 に答える