2012-02-17 112 views
1

我寫了使用restfb的facebook android應用程序。如何不像一個用戶喜歡在facebook的帖子android

對於不像一個帖子,Facebook的圖形API說要發送一個HTTP刪除對https://graph.facebook.com/postid/likes 與訪問令牌

的示例代碼

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(); 
    } 

在執行我從得到錯誤的請求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> 

如何解決

任何幫助

感謝。

回答

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(); 
    } 
2

三件事來檢查:

  1. 你有publish_streamextended permission該用戶?
  2. 用戶是否真的喜歡這篇文章?
  3. 中間是否有代理服務器,可能導致HTTP DELETE請求被刪除?嘗試通過一個GET請求,但加一個參數,&method=delete給你提出請求「僞造」一個DELETE請求 - Facebook的API將其視爲「刪除」,即使它到達一個GET請求

應該有回來的400錯誤的身體更好的錯誤信息 - 如果你提供我們或許可以幫助更多的

+0

是我有publish_stream擴展許可,並且用戶是相同的誰喜歡的職位。我只看到400錯誤。如何打印錯誤日誌的主體 – Abi 2012-02-17 10:08:39

+0

我得到了如何打印響應的主體。它在問題中更新。請求中無效的方法 – Abi 2012-02-17 10:28:48

+0

郵政編號是否正確?另外,我不是100%肯定的,但我不認爲這種反應實際上是從Facebook回來的 - 我認爲我沒有看到來自graph.facebook.com的400個錯誤中的HTML - 是有一箇中間的代理服務器可能導致HTTP DELETE請求被刪除?嘗試通過僞裝GET請求來僞造DELETE請求,但添加參數'&method = delete' – Igy 2012-02-17 10:34:34