Intereting Posts

Как использовать FB Graph для публикации сообщения на ленте (стене)

Я создал приложение, и теперь я хочу опубликовать сообщение на одной из стен моих друзей с использованием нового Graph API. Является ли это способным?

Я уже использую oAuth и Graph-api, чтобы получить список всех моих друзей. API на http://developers.facebook.com/docs/api сообщает мне cURL https://graph.facebook.com/[userid]/feed, чтобы прочитать фид, но также сообщает мне, как отправить сообщение:

curl -F 'access_token=[...]' -F 'message=Hello, Arjun. I like this new API.' https://graph.facebook.com/arjun/feed 

Конечно, это не работает! И я не могу понять, почему ..

Вот мой PHP-код:

 require_once 'facebook.php'; // PHP-SDK downloaded from http://github.com/facebook/php-sdk $facebook = new Facebook(array(appId=>123, secret=>'secret')); $result = $facebook->api( '/me/feed/', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..') ); 

Этот код не вызывает ошибок, и я знаю, что мой access_token верен (иначе я не мог запускать $ facebook-> api ('/ me? Access_token ='. $ This-> access_token), чтобы получить свой пользовательский объект.

Кто-нибудь там, судя по всему, отправил сообщение с помощью Graph-api? Тогда мне нужна ваша помощь! 🙂

Solutions Collecting From Web of "Как использовать FB Graph для публикации сообщения на ленте (стене)"

Хорошо, я, наконец, решил это. Thanx to phpfour за вашу помощь 🙂

Во-первых: мой URL-адрес соединения выглядит так (с «publish_stream»):

 $connectUrl = $this->getUrl( 'www', 'login.php', array_merge(array( 'api_key' => $this->getAppId(), 'cancel_url' => $this->getCurrentUrl(), 'req_perms' => 'publish_stream', 'display' => 'page', 'fbconnect' => 1, 'next' => $this->getCurrentUrl(), 'return_session' => 1, 'session_version' => 3, 'v' => '1.0', ), $params) ); 

Во-вторых ; Я попытался отправить в facebook через

 $result = $facebook->api( '/me/feed/', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..') ); 

Но правильный способ сделать это – включить еще один параметр («post»):

 $result = $facebook->api( '/me/feed/', 'post', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..') ); 

Для записи в фид вам понадобится расширенное разрешение «publish_stream». Вот полный список из них: http://developers.facebook.com/docs/authentication/permissions .

Чтобы получить расширенное разрешение, введите токен авторизации следующим образом:

 https://graph.facebook.com/oauth/authorize? client_id=...& redirect_uri=http://www.example.com/callback& scope=publish_stream 

Как говорится в ссылке: введите ссылку здесь.

 <?php $app_id = "YOUR_APP_ID"; $app_secret = "YOUR_APP_SECRET"; $my_url = "YOUR_POST_LOGIN_URL"; $code = $_REQUEST["code"]; if(empty($code)) { $dialog_url = "http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&amp;redirect_uri=" . urlencode($my_url) . "&amp;scope=email"; echo("<script>top.location.href='" . $dialog_url . "'</script>"); } $token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $app_id . "&amp;redirect_uri=" . urlencode($my_url) . "&amp;client_secret=" . $app_secret . "&amp;code=" . $code; $access_token = file_get_contents($token_url); $graph_url="https://graph.facebook.com/me/permissions?".$access_token; echo "graph_url=" . $graph_url . "<br />"; $user_permissions = json_decode(file_get_contents($graph_url)); print_r($user_permissions); ?> 

Чтобы уточнить, «post» здесь ссылается на HTTP-метод, как в GET / POST. См. https://github.com/facebook/php-sdk/blob/master/src/base_facebook.php : защищенная функция _graph ($ path, $ method = 'GET', $ params = array ())

$ result = $ facebook-> api ('/ me / feed /', 'post', array ('access_token' => $ this-> access_token, 'message' => 'Игра с FB Graph ..')) ;

В дополнение к chf ,

После публикации:

 $getLinkToken='https://graph.facebook.com/oauth/access_token'. '?client_id=YOUR_APPID'. '&redirect_uri=YOUR_SITE'. '&client_secret=YOUR_SECRET'. '&code=CODE_KEY'; 

Я получил ответ:

  https://graph.facebook.com/oauth/access_token? client_id=xxxxxxxxxxxxxx &redirect_uri=myurl &client_secret=xxxxxxxxxxxxxx &code=xxxxxxxxxxxxxx 

no access_token one – access_token , client_secret или код

 $facebook->api( '/YOUR_APPID/feed/', 'post', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')); 

Это старый способ получить доступ. В GRAPH сначала я сгенерировал код с:

 $getLinkCode ='https://graph.facebook.com/oauth/authorize'. '?client_id=YOUR_APPID'. '&redirect_uri=YOUR_SITE'. '&scope=publish_stream'; 

И теперь, когда у нас есть кодовый ключ, мы можем генерировать access_token из ссылки:

 $getLinkToken='https://graph.facebook.com/oauth/access_token'. '?client_id=YOUR_APPID'. '&redirect_uri=YOUR_SITE'. '&client_secret=YOUR_SECRET'. '&code=CODE_KEY'; 

Но этот access_token опубликует ваше сообщение как ПОЛЬЗОВАТЕЛЬ не ПРИМЕНЕНИЕ … ПОЧЕМУ ?!

Если вы хотите, чтобы сообщение на стене приложения использовалось:

 $facebook->api( '/YOUR_APPID/feed/', 'post', array('access_token' => $this->access_token, 'message' => 'Playing around with FB Graph..')); 

Вместо использования приведенного ниже кода

 [facebook dialog:@"feed" andParams:params andDelegate:self]; 

Используйте следующее решение

 [facebook requestWithGraphPath:@"me/feed" andParams:params andHttpMethod:@"POST" andDelegate:self];