Как вы получаете самые последние сообщения от данного пользователя на Facebook graph?

#php #facebook #facebook-graph-api

#php #Facebook #facebook-graph-api

Вопрос:

Я пытаюсь получить последние сообщения друзей данного пользователя (php)
$ Fb = new Facebook(array(‘AppID’=> ‘xxxxxxxxxxxxxxxx’,’secret’=> ‘xxxxxxxxxxxxxxxxxx’));
$access_token = $Fb-> getAccessToken();
// Я получаю токен
$url = «https://graph.facebook.com /».$id.»/posts?access_token=».$access_token;
$data = file_get_contents ($url); // работает с любой другой командой.
$ var = json_decode($data, true); // в виде массива, а не объекта
$ txt .= display_tree ($ var); // мой собственный способ отображения
без результата.

Комментарии:

1. Вы пытаетесь получить последние сообщения от конкретного пользователя, который является другом вашего аутентифицированного пользователя, или последние сообщения от вашего аутентифицированного пользователя.

2. сделайте var_dump($data); и опубликуйте результат.

Ответ №1:

  • Используйте Facebook PHP SDK, чтобы получить авторизацию от пользователя, и используйте метод «scope», чтобы получить разрешение «read_stream», которое позволит просматривать поток профилей пользователей, более известный как «стена», но, поскольку вы не хотите также видеть обновления facebook, вы можете запросить разрешение «offline_access», затем, после того, как пользователь войдет в Facebook, сайт вернет вам данные с сообщениями на стене пользователей и там домашними сообщениями (домашние записи содержат данные, на которые подписаны пользователи, поэтому там будут сообщения друзей и на других страницах).

Затем, как только у вас есть разрешение «offline_access», вы можете получить эти данные в любое время, используя токен доступа пользователей, указанный в этом разрешении.

Этот файл проверяет, находится ли пользователь онлайн в Facebook, если нет, они будут переведены на страницу входа facebook, и, если пользователь еще не дал разрешение, у него будет запрошено это. «Область» после loginUrl — это то место, где вы будете указывать требуемые разрешения.


 <?php
require 'facebook.php'; // Make sure to have the Facebook PHP SDK

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId'  => 'APPID',
  'secret' => 'APPSECRET',
));
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------

// Get User ID
$user = $facebook->getUser();

/* We may or may not have this data based on whether the user is logged in.
   If we have a $user id here, it means we know the user is logged into
   Facebook, but we don't know if the access token is valid. An access
   token is invalid if the user logged out of Facebook. */

if ($user) {
  try {
    // Proceed knowing you have a logged in user who's authenticated.
    // These are the graph calls -->

    $dt = $facebook->api('/me');
    $lk = $facebook->api('/me/likes');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// Handler for Login Status
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array("scope" => "email,user_birthday,user_likes,user_location,offline_access,read_stream"));
}
// ----------------------------------------------------------------------------------------
?>

<?php if (!$user): header ('Location:'.$loginUrl.''); //checks if the user is logged in
else: 
        // Do Something here. This next bit of code shows what comes out of those calls.
      echo "<pre>"; 
      print_r($dt);
      echo"</pre>";

      echo"<br/><br/>";

      echo "<pre>"; 
      print_r($lk);
      echo"</pre>";
endif
?>
  

Ответ №2:

Сначала попробуйте это в Facebook Graph Explorer, чтобы изолировать проблему от любых проблем в вашем php-коде.

https://developers.facebook.com/tools/explorer

Просто глядя на ваш код, похоже, что вы не запрашивали разрешения read_stream? Только токен доступа даст вам только общедоступные сообщения, и, возможно, у данного пользователя нет общедоступных сообщений.

http://developers.facebook.com/docs/reference/api/user/

Ответ №3:

Вероятно, Facebook выдает ошибку, которую вы не можете прочитать, потому что по умолчанию вы не можете читать страницы с ошибками.

file_get_contents() должен иметь заданный stream_context (третий параметр), который говорит 'ignore_error' => TRUE

Иначе вы не сможете увидеть, какую ошибку Facebook выдает вам в виде json, и вместо этого функция вернет только FALSE .

stream_context_create()