2015-09-04 2 views
2

Я разрабатываю проект PHP, который нуждается в интеграции Facebook. Поэтому, прежде чем я это сделаю по коду, я тестирую его с помощью утилиты Google Graph API explorer (https://developers.facebook.com/tools/explorer). То, что я делаю сейчас, это.Как опубликовать сообщение на странице Facebook с использованием CURL и без использования SDK в PHP

первый шаг

Get the user access_token by using the button at the top left. 

второй этап

Make a GET request to "me/accounts" to get the page token and page id. 

третий этап

Make a POST request to "{page_id}/feed" with the fields message={message} and access_token={page_token} 

Он отлично работал и размещен на моей странице поклонников Facebook. Но когда я пытаюсь заменить «третий шаг» на PHP-код вроде этого

$data['message'] = "my message"; 


$data['access_token'] = $page_access_token; //page token from 2nd step 
$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL, 'https://graph.facebook.com/{page_id}/feed'); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch,CURLOPT_POSTFIELDS, $data); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($ch, CURLOPT_POST, 1); 


$resp = curl_exec($ch); 

curl_close($ch); 

$data_resp = json_decode($resp); 

print_r($data_resp); 

Это покажет мне эту ошибку.

stdClass Object ([error] => stdClass Object ([message] => (#200) Permissions error [type] => OAuthException [code] => 200)) 

Я установил разрешения manage_pages, publish_pages, publish_actions

+0

отладить ваш 'access_token' и проверить, получили ли он необходимые разрешения. https://developers.facebook.com/tools/debug/ – Criesto

ответ

-1

Посмотрите в документации на

Права доступа

  • Токен доступа пользователя с publish_actions разрешения может быть использован для публикации новых сообщений от имени этого лица. Сообщения будут отображаться в голосе пользователя.
  • Значок доступа к странице с разрешением publish_pages может использоваться для публикации новых сообщений от имени этой страницы. Сообщения будут отображаться в голосе страницы.

Вы должны запустить использованный маркер доступа через

видеть, содержит ли он соответствующее разрешение (ов).

+0

Да. Токен в порядке и включает все необходимые разрешения. –

2

Передача массива для CURLOPT_POSTFIELDS означает, что cURL отправит запрос как Content-Type multipart/form-data - но вместо этого вы хотите application/x-www-form-urlencoded.

Используйте http_build_query на вашем массиве $data и используйте полученную строку для CURLOPT_POSTFIELDS.