1

我已经使用restfb编写了 facebook android 应用程序。

与帖子不同的是,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

要检查的三件事:

  1. 您是否拥有该用户的publish_stream 扩展权限
  2. 用户真的已经喜欢这篇文章了吗?
  3. 中间是否有可能导致 HTTP DELETE 请求被丢弃的代理服务器?尝试通过发出 GET 请求但向&method=delete您发出的请求添加参数来“伪造”DELETE 请求 - Facebook API 会将其视为“DELETE”,即使它以 GET 请求的形式到达

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 回答