1

restfbを使用して facebook android アプリケーションを作成しました。

post とは異なり、Facebook Graph Api は 、アクセス トークンを使用してhttps://graph.facebook.com/postid/likesに HTTP 削除を送信するように指示します。

サンプルコードは

String postURL = FacebookAppConstants.GRAPH_API_ACCESS+"/"+postID+
            "/likes&access_token="+FacebookAppConstants.accessToken;

    Log.out(logFlag, logTag, "########Delete URL = "+postURL);
    HttpDelete dislikePost = new HttpDelete(postURL);
    Log.out(logFlag,logTag,"####Method : "+dislikePost.getMethod());


    try {
        HttpResponse response = httpClient.execute(dislikePost);

        Log.out(logFlag, logTag,response.getStatusLine().toString());


    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

実行中に、サーバーから BAD Request 400 を取得しています。

HTTP/1.1 400 Bad Request

    <HTML><HEAD>
D/SMF     ( 2546): <TITLE>400 Bad Request</TITLE>
D/SMF     ( 2546): </HEAD><BODY>
D/SMF     ( 2546): <H1>Method Not Implemented</H1>
D/SMF     ( 2546): Invalid method in request<P>
D/SMF     ( 2546): </BODY></HTML>

解決策は何ですか

どんな助けでも

ありがとう。

4

2 に答える 2

2

3 つの確認事項:

  1. publish_stream そのユーザーの拡張アクセス許可を持っていますか?
  2. ユーザーは実際にその投稿を既に気に入っていますか?
  3. HTTP DELETE 要求がドロップされる原因となっている可能性のあるプロキシ サーバーが途中にありますか? GET リクエストを作成して DELETE リクエストの「偽装」を試みます&method=deleteが、作成中のリクエストにパラメーターを追加します。Facebook API は、GET リクエストで到着した場合でも、これを「DELETE」として扱います。

400 エラーの本文に、より適切なエラー メッセージが返されるはずです。

于 2012-02-17T09:40:54.127 に答える
1
    String postURL = FacebookAppConstants.GRAPH_API_ACCESS+"/"+postID+
            "/likes&access_token="+FacebookAppConstants.accessToken;

    Log.out(logFlag, logTag, "########Delete URL = "+postURL);

    HttpGet dislikePost = new HttpGet(postURL+"&method=DELETE");


    try {
        HttpResponse response = httpClient.execute(dislikePost);
        HttpEntity entity = response.getEntity();
        String body = EntityUtils.toString(entity);
        Log.out(logFlag, logTag, "Body : "+body);           

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
于 2012-02-17T12:27:51.697 に答える