Facebook API - удалить статус - PullRequest
6 голосов
/ 18 мая 2010

В PHP я использую curl для отправки удаления на api fb graph - и все же получаю следующую ошибку;

{"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;

$ запрос содержит токен доступа.

Ответы [ 6 ]

11 голосов
/ 10 августа 2010

Исправлено!

При удалении необходимо добавить идентификатор пользователя к идентификатору объекта:

УДАЛИТЬ https://graph.facebook.com/673509687_104812882909249?access_token={access_token} где 673509687 - это мой идентификатор пользователя, а 104812882909249 - это идентификатор объекта

1 голос
/ 25 октября 2011

Я немного изменил ваш код. (Должно появиться «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;?>
1 голос
/ 22 сентября 2011

Для тех, кто все еще борется с этим, я узнал, в чем заключается моя проблема при попытке удалить запросы приложений, которые я ранее создал с помощью PHP SDK, что привело к этой ошибке.

(# 2) Неверный параметр: Тело сообщения об ошибке / предупреждения. Заголовок: Неверный параметр

Проблема была в основном с тем, какой токен доступа использовался; пользователь или приложение.

Конкретный сценарий, над которым я работал, был, когда пользователь в моем приложении пригласил друга Facebook (используя запрос приложения), но затем хочет отозвать это приглашение. В этом случае я хочу удалить запрос приложения на Facebook, который был ранее создан. Однако в данный момент зарегистрированный пользователь является не получателем запроса приложения, а отправителем.

Глядя на код PHP SDK, он автоматически использует токен доступа пользователя, если он есть, поверх токена доступа к приложению. На самом деле, похоже, нет способа явно получить токен приложения из SDK.

При попытке удалить запрос приложения, используя следующее ...

$ facebook-> api ('/'.$ fb_request_id,' DELETE ');

... и, позволив PHP SDK выбрать токен пользователя, я получил (# 2) сообщение об ошибке неверного параметра. Однако, если я вручную создаю токен доступа к приложению (где формат «$ app_id | $ app_secret») и передаю его как ключ массива в третьем параметре ...

$ facebook-> api ('/'.$ fb_request_id,' DELETE ', массив (' access_token '=> $ app_access_token);

.. тогда вызов будет успешным.

Таким образом, вам необходимо использовать токен доступа к приложению, чтобы удалить запросы приложения, если текущий пользователь не является получателем запроса приложения.

Надеюсь, это поможет всем, кто борется с той же проблемой.

0 голосов
/ 15 сентября 2011

Об этом ответе:

Исправлено! Вы должны добавить идентификатор пользователя к идентификатору объекта при удалении: УДАЛИТЬ https://graph.facebook.com/673509687_104812882909249?access_token={access_token} где 673509687 - это мой идентификатор пользователя, а 104812882909249 - это идентификатор объекта

К сожалению, это будет работать только с маркером доступа пользователя, а не когда вы пытаетесь удалить запрос приложения на сервере (с маркером доступа приложения), используя, например, язык PHP.

Если у вас есть решение для удаления запросов с использованием токена app-access-token, опишите его. Спасибо за вашу помощь!

0 голосов
/ 01 августа 2010

Это просто означает, что метод удаления HTTP не поддерживается для этого конкретного объекта.

Один из вариантов - использовать HOSTP POST и добавить метод = delete к запросу параметра Убедитесь, что ваше приложение имеет разрешение publish_stream, иначе вы никогда не сможете опубликовать фид. Разрешения сделаны Facebook.

0 голосов
/ 18 мая 2010

Единственное, что я могу подумать, это попробовать

1) выполните POST-запрос с методом method = delete, чтобы проверить, работает ли он

2) вручную посмотрите на полученный HTTP-запрос, чтобы увидеть, не выглядит ли что-то неправильно - тогда вы можете изолировать проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...