Разместить на странице FB как пользователь - PullRequest
0 голосов
/ 07 марта 2012

Итак, у меня есть страница в Facebook (назовем это X), на которой есть приложение Y.Пользователь может задать вопрос через Y, и он будет опубликован в X как пользователь (не как приложение).

В настоящее время мои разрешения для приложения установлены на publish_stream.

Я могувозьмите токен через

    $token_url = "https://graph.facebook.com/oauth/access_token?" .
       "client_id=" . $this -> data["environment"] -> fb_appid .
       "&client_secret=" . $this -> data["environment"] -> fb_appsecret .
       "&grant_type=client_credentials";
    $app_token = file_get_contents($token_url);

, что дает мне токен очень хорошо.

Теперь, если я попытаюсь POST через вызов APi, я получу два результата:

Когда я не передаю токен и просто звоню

$post_id = $this ->Facebook->fb_api("/PAGE_ID/feed", "POST", array("message"=>"This is a post from PHP."));

, я получаю ответ в виде JSON

{
   "id": "PAGEID_someOtherID"
}

, но я не вижу сообщение на стене.

Когда я передаю токен доступа, ala

$post_id = $this ->Facebook->fb_api("/PAGE_ID/feed", "POST", array("access_token"=>$app_token,"message"=>"This is a post from PHP."));

мой ответ возвращается пустым.

Что я делаю не так с такой простой концепцией?

1 Ответ

2 голосов
/ 07 марта 2012

Пример из документации Facebook https://developers.facebook.com/docs/reference/php/facebook-api/

<code><?php
      // Remember to copy files from the SDK's src/ directory to a
      // directory in your application on the server, such as php-sdk/
      require_once('php-sdk/facebook.php');

      $config = array(
        'appId' => 'YOUR_APP_ID',
        'secret' => 'YOUR_APP_SECRET',
      );

      $facebook = new Facebook($config);
      $user_id = $facebook->getUser();
    ?>
    <html>
      <head></head>
      <body>

      <?
        if($user_id) {

          // We have a user ID, so probably a logged in user.
          // If not, we'll get an exception, which we handle below.
          try {
            $ret_obj = $facebook->api('/'.$pageid.'/feed', 'POST',
                                        array(
                                          'link' => 'www.example.com',
                                          'message' => 'Posting with the PHP SDK!'
                                     ));
            echo '<pre>Post ID: ' . $ret_obj['id'] . '
'; } catch (FacebookApiException $ e) { // Если пользователь вышел из системы, вы можете иметь // идентификатор пользователя, хотя токен доступа недействителен. // В этом случае мы получим исключение, поэтому мы // просто попросите пользователя войти снова здесь. $ login_url = $ facebook-> getLoginUrl (массив ( 'scope' => 'publish_stream' )); echo 'Пожалуйста логин. '; error_log ($ e-> GetType ()); error_log ($ e-> GetMessage ()); } // Предоставляем пользователю ссылку для выхода echo '
getLogoutUrl() . '"> logout '; } еще { // Нет пользователя, поэтому выводим ссылку для входа пользователя // Для публикации на стене пользователя нам нужно разрешение publish_stream // Мы будем использовать текущий URL в качестве redirect_uri, поэтому мы не будем // нужно указать это здесь. $ login_url = $ facebook-> getLoginUrl (array ('scope' => 'publish_stream')); echo 'Пожалуйста логин. '; } ?>

Ну, вы не можете опубликовать что-либо на стене страницы без access_token. Причина без маркера доступа. Facebook не может понять, кто такой пользователь, который хочет оставлять сообщения, и о времени, когда вы пытаетесь опубликовать сообщение через access_token. Я думаю, что вы что-то делаете. неправильно, пожалуйста, проверьте ваши права доступа (вам нужно publish_stream, а не stream_publish), я скоро выложу для вас пример кода

...