6

PHP では、curl を使用して fb グラフ API に削除を送信していますが、次のエラーが発生しています。

{"error":{"type":"GraphMethodException","message":"Unsupported delete request."}}

私が使用しているコードは次のとおりです。

$ch = curl_init("https://graph.facebook.com/" . $status_id . ""); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_CAINFO, NULL); 
curl_setopt($ch, CURLOPT_CAPATH, NULL); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 

$result = curl_exec($ch); 
echo $result;

$query にはアクセス トークンが含まれます。

4

6 に答える 6

11

修理済み!

削除するときは、オブジェクト ID の前にユーザー ID を追加する必要があります。

DELETE https://graph.facebook.com/673509687_104812882909249?access_token= {access_token} ここで、673509687 は私のユーザー ID で、104812882909249 は objectID です

于 2010-08-10T15:54:54.103 に答える
1

あなたのコードを少し修正しました。(正しく行われた場合は「true」をエコーする必要があります)これが現在私のために働いているものです。

また、これは Facebook 経由で作成されたイベントを消去しないことに注意してください。そのため、アクセス許可エラーが発生します。これは、アプリケーションを通じて作成されたイベントのみを消去します... (アプリケーションは $app_id、$app_secret にリンクされています)

//First authenticate a token


$app_id = "APP ID GOES HERE";
$app_secret = "SECRET APP ID GOES HERE";
$my_url = "WHATEVER THIS PAGES NAME IS GOES HERE";  


//I'm not sure but I think REQUEST is still allowed....right? if not change it to GET/POST

$code = $_REQUEST["code"];

if(empty($code)) {
$auth_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&scope=create_event";
echo("<script>top.location.href='" . $auth_url . "'</script>");
}

$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;
$access_token = file_get_contents($token_url);




//Use TRUE and FALSE not 0 and 1's like you originally had it

//264853420218553 is the event id.

$ch = curl_init("https://graph.facebook.com/264853420218553?" . $access_token . ""); 
curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_HEADER, FALSE); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120);
curl_setopt($ch, CURLOPT_POST, TRUE);
//curl_setopt($ch, CURLOPT_POSTFIELDS, $query); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, TRUE);  
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_CAINFO, NULL); 
curl_setopt($ch, CURLOPT_CAPATH, NULL); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);

$result = curl_exec($ch); 
echo $result;?>
于 2011-10-25T09:00:24.210 に答える
0

これは単に、その特定のオブジェクトに対して HTTP 削除メソッドがサポートされていないことを意味します。

1 つのオプションは、Http POST を使用し、パラメーター クエリに method=delete を追加することです。アプリケーションにアクセス許可があることを確認してくださいpublish_stream。そうしないと、フィードを公開できません。許可は Facebook によって行われます。

于 2010-08-01T00:08:14.963 に答える
0

この回答について:

修理済み!削除するときは、オブジェクト ID の先頭にユーザー ID を追加する必要があります。

残念ながら、これは user-accesstoken でのみ機能し、たとえば PHP 言語を使用してサーバー上の (app-access-token を使用して) apprequest を削除しようとすると機能しません。

app-access-token を使用して apprequests を削除するソリューションがある場合は、それについて説明してください。ご協力いただきありがとうございます!

于 2011-09-15T01:40:58.153 に答える
0

私がしようと思うことができる唯一のことは

1) 「method=delete」を指定して POST リクエストを実行し、それが機能するかどうかを確認します

2) 生成された HTTP リクエストを手動で調べて、何か問題があるかどうかを確認します。その後、問題を特定できます。

于 2010-05-18T16:29:49.043 に答える