Размещение на стене в фейсбуке
Я пытаюсь опубликовать на своей странице в Facebook, используя curl, но получаю следующую ошибку
The user hasn't authorized the application to perform this action
Как сгенерировать правильный токен доступа с помощью curl? если вы перейдете по этому адресу http://developers.facebook.com/tools/explorer/
Затем я могу вставить следующий https://graph.facebook.com/337588736279406/feed и это покажет мой настенный канал. Затем я могу изменить его на публикацию и добавить поле для содержания сообщения, если я запусту его, я получу следующий ответ.
{
"error": {
"message": "(#200) The user hasn't authorised the application to perform this action",
"type": "OAuthException",
"code": 200
}
}
Что мне нужно сделать, чтобы авторизовать меня как пользователя?
Может ли кто-нибудь помочь мне в этом.
<?php
function postify($arr) {
$fields_string = '';
foreach ($arr as $key => $value) {
$fields_string .= $key . '=' . $value . '&';
}
return rtrim($fields_string, '&');
}
$appid = 'app id';
$redirect_url = 'http://stickynote.users36.interdns.co.uk';
$app_secret = 'app secret';
$page_id = '337588736279406';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id='.$appid.'&redirect_uri='.$redirect_url.'&client_secret='.$app_secret.'&perms=publish_stream');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
$output = explode("=", $output);
curl_close($ch);
$postdata = array(
'message' => 'this is a test message',
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/'.$page_id.'/feed?access_token='.$output[1].'');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, postify($postdata));
$check = curl_exec($ch);
print_r($check);
?>
2 ответа
Чтобы иметь возможность размещать контент, вы должны предоставить publish_stream
разрешение на ваше заявление.
Запрос разрешений можно выполнить с помощью OAuth Dialog.
Кстати, если вам просто нужно это для пользователя в целях тестирования, вы можете использовать Проводник, выбрав свое приложение, щелкнув Получить токен доступа и проверив необходимые разрешения.
Обновить:
Вы не сможете оставлять сообщения от имени приложения, только пользователя или страницы с соответствующими access_token
(для страницы это потребует manage_pages
а также access_token
от accounts
соединение user
). Не нужно указывать perms
в access_token
поисковый URL. Разрешения должны быть предоставлены до этого шага.
Для этого вам нужно получить токен доступа к странице.
В документации сказано:
Страница access_token
Access_token используется для управления страницей. Это используется, когда вы хотите выполнить операцию, действующую как страница. Этот токен доступа можно получить, выдав HTTP GET для /USER_ID/account или /PAGE_ID? Fields=access_token с разрешением manage_pages. Получение /USER_ID/account возвращает список страниц (включая страницы профиля приложения), к которым пользователь имеет административный доступ, в дополнение к access_token для каждой страницы. В качестве альтернативы вы можете получить токен доступа к странице для отдельной конкретной страницы, введя HTTP GET для /PAGE_ID? Fields=access_token с разрешением manage_pages (вы должны запросить поле access_token специально через параметр fields=). См. Документацию для объекта Page для получения дополнительной информации.
После того, как вы получите токен доступа, вы можете сделать эти вызовы API.