2012-02-17 14 views
1

restfbを使ってFacebookのアンドロイドアプリケーションを書いています。ポストとは違っについてはユーザーがアンドロイドでfacebookで好きな投稿と違う方法

、FacebookのグラフAPIは、私から不正な要求400を取得しています実行中

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

であるアクセストークン

サンプルコードでhttps://graph.facebook.com/postid/likes に削除のHttpを送信すると言いますサーバ。

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

3つのこと:

  1. あなたがそのユーザーのpublish_streamextended permissionを持っていますか?
  2. ユーザーは実際に投稿を本当に好きですか?
  3. 途中にプロキシサーバーがあり、HTTP DELETE要求が破棄される可能性がありますか? GETリクエストでDELETEリクエストを「フェイク」しようとするが、作成中のリクエストに&method=deleteというパラメータを追加すると、Facebook APIはGETリクエストで到着しても 'DELETE'として扱う。

400エラーの体に戻って来て、より良いエラーメッセージがあるはずです - あなたは、我々はおそらくより

+0

はい、私はpublish_streamが拡張されている権限を助けることができると、ユーザがポストを好ん人と同じであることを提供する場合。私は400エラーだけを見ている。どのようにエラーログの本文を印刷する – Abi

+0

私は応答の本文を印刷する方法があります。それは質問で更新されます。依頼に無効な方法があります。 – Abi

+0

投稿IDは正しいですか?また、私は100%確信していませんが、その反応はFacebookから実際に戻ってくるとは思わない - 私はgraph.facebook.comからの400のエラーの本文にHTMLを見たとは思わない途中にプロキシサーバーがあり、HTTP DELETE要求が破棄される可能性がありますか? '&method = delete'パラメータを追加することでDELETEリクエストを試してみてください。 – Igy

関連する問題