Какой формат данных HTTP POST используется в Graph API? - PullRequest
1 голос
/ 05 сентября 2011

Я использую Graph API https://developers.facebook.com/docs/reference/api/#publishing с PHP SDK, и я хотел бы отправить некоторые данные методом HTTP POST, как это указано в документации (например, добавить комментарий).

В https://developers.facebook.com/docs/reference/api/batch/ говорят, что я должен закодировать тело HTTP-запроса POST как ... должен быть отформатирован как необработанная строка тела HTTP POST, аналогично строке запроса URL . Я не могу получить комбинацию функций PHP, чтобы заставить это работать. В примере они утверждают, что должно работать следующее:

"body": "message=Test status update"

Ну, это работает. Но что, если мне нужно добавить другие параметры? И как должна быть закодирована эта строка? Например. У меня есть это:

$data = array('name' => 'Gargamel', 'occupation' => 'Freelancing Smurf Hunter');

Как мне обработать его, чтобы получить требуемый формат? Следующее НЕ работает:

$batch = array();
$query = array(
    'method' => 'POST',
    'relative_url' => '/forrest/full/of/smurfs',
    'body' => urldecode(http_build_query($data)),
);
$batch[] = $query;
$responses = $this->api('/?batch=' . json_encode($batch, JSON_HEX_AMP), 'POST');

Я исследовал половину Интернета, но не могу найти более конкретной информации о формате, чем упомянутый выше (необработанный HTTP POST, похожий на строку запроса URL).

Спасибо за любые предложения!

Ответы [ 2 ]

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

используя это: http://forum.developers.facebook.net/viewtopic.php?pid=331343#p331343

    $batch_array[] = array(
        'method' => 'POST',
        'relative_url' => 'Relative url',
        'body' => 'message=' . 'Your message' . '%26data=' . 'Your data' ,

    ); 
0 голосов
/ 05 сентября 2011

Это мой пример кода партии:

$graph_url = "https://graph.facebook.com/me/friends?access_token=" . $params['access_token'];
$friends = json_decode(file_get_contents($graph_url));

$batched_request = '[{"method":"GET","relative_url":"'.$friends->data[0]->id.'/likes"}';
for ($i = 1; $i < 20; $i++) {
    $batched_request .= ',{"method":"GET","relative_url":"'.$friends->data[$i]->id.'/likes"}';
}
$batched_request .= ']';

$post_url = 'https://graph.facebook.com/?batch=' 
    . $batched_request . '&access_token=' . $params['access_token'] . '&method=post';
$posts = file_get_contents($post_url);

for ($i = 0; $i < 20; $i++) {
    $post = json_decode($posts[$i]->body);
    echo($friends->data[$i]->id.' '.$friends->data[$i]->name);
    //print_r($post);
}

Предел пакетных запросов 20 запросов.Вам необходимо декодировать каждую часть пакетного запроса, см. Код выше.

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