мне нужно пройти аутентификацию перед отправкой на мою собственную стену, так что вот мой код
function get_app_token($appid, $appsecret) { $args = array( 'grant_type' => 'client_credentials', 'client_id' => $appid, 'client_secret' => $appsecret ); $ch = curl_init(); $url = 'https://graph.facebook.com/oauth/access_token'; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $args); $data = curl_exec($ch); return json_encode($data); } $token = get_app_token($appid, $appsecret); $attachment = array('message' => '', 'access_token' => $token, 'name' => 'Attachment Name', 'caption' => 'Attachment Caption', 'link' => 'http://apps.facebook.com/xxxxxx/', 'description' => 'Description .....', 'picture' => 'http://www.google.com/logo.jpg', 'actions' => array(array('name' => 'Action Text', 'link' => 'http://apps.facebook.com/xxxxxx/')) ); $result = $facebook->api('/me/feed/', 'post', $attachment);
я получил ошибку OAuthException, недопустимую сигнатуру токена доступа OAuth.
вы можете получить access_token из массива сеансов непосредственно объекта facebook.
$session = $facebook->getSession(); $session['access_token'];
конечно, вам нужно авторизоваться. если сеанс не установлен, вы должны перенаправить на loginUrl
$facebook->getLoginUrl(array('req_perms' => 'email,read_stream,publish_stream')); // this will return url for your authorization
и запросить разрешение, в котором вы нуждаетесь.
Значением $token
является access_token=<YOUR_ACCESS_TOKEN>
Вы не можете передать значение $token
непосредственно в параметр access_token
.
$token = get_app_token($appid, $appsecret); $access_token = split('=',$token); $attachment = array( 'message' => '', 'access_token' => $access_token[1], 'name' => 'Attachment Name', 'caption' => 'Attachment Caption', 'link' => 'http://apps.facebook.com/xxxxxx/', 'description' => 'Description .....', 'picture' => 'http://www.google.com/logo.jpg', 'actions' => array(array('name' => 'Action Text', 'link' => 'http://apps.facebook.com/xxxxxx/')) );
Надеюсь, это поможет в создании этой работы … 🙂
client_credentials
доступа client_credentials
не дает никакого доступа к /me
(кто бы «я» был в этом случае? Нет ничего, что связывает его с пользователем), не говоря уже о публикации доступа. Он предназначен для использования только с вызовами Graph API на уровне приложений, например, для получения данных Insights приложения.