Использование PHP-библиотеки API Graph Graph - PullRequest
5 голосов
/ 23 апреля 2010

Я использую библиотеку PHP для Graph API (http://github.com/facebook/php-sdk), но меня немного смущает, как все это работает (или нет).

Я просто хочу аутентифицировать пользователя и получить его обратно. Что я действительно хочу знать, так это то, что делать, когда пользователь вошел в Facebook и вернулся на мой сайт. В URL есть данные, называемые «сессия». Это нужно сохранить, чтобы постоянно получать идентификатор пользователя? Это действительно не очевидно, для меня, из образцов или (отсутствие) документации.

Кроме того, было бы проще просто полностью исключить библиотеку PHP и просто обработать ответ, сохранив ее в переменной сеанса. Если бы я сделал это, каков наилучший способ получения / извлечения идентификатора текущего пользователя?

Edit:

В настоящее время я скопировал файл facebook.php и файл example.php из GitHub и изменил только имя приложения и секрет в example.php. Он не хранит куки и говорит: «Вы не связаны». Однако, когда я print_r($session); работает (но только если URL содержит данные сеанса).

Кто-нибудь еще испытывал подобные проблемы? Возможно ли, что запуск на локальном хосте вызывает это?

Edit:

Я загрузил на хост точно такие же два файла, и он работал отлично. Он сохранил куки и показал всю информацию, которую он должен. Скорее всего, проблемы с локальным хостом вызывают проблемы. Я изменил настройки на вкладке «Подключиться» в приложении для разработчиков Facebook, но все равно не повезло.

Кто-нибудь знает, как это сделать с localhost или что я делаю не так?

Ответы [ 5 ]

5 голосов
/ 23 апреля 2010

В URL есть данные, называемые «сессия». Нужно ли сохранять это, чтобы постоянно получать идентификатор пользователя?

Да, его нужно сохранить, но класс Facebook анализирует его и сохраняет его в файле cookie для вас.


Кроме того, было бы проще просто полностью вырезать библиотеку PHP и просто обработать ответ, сохранив ее в переменной сеанса.

Класс Facebook, предоставленный в facebook.php , не является обязательным для использования API, но предоставляет вам несколько удобств, таких как объединение общих URL-адресов, анализ данных сеанса (который отправляется URL, а затем сохраняется в cookie), превращая сообщения об ошибках (объект JSON с ключом «error») в исключение PHP и т. Д.

Так что, короче говоря, нет, было бы проще вырезать библиотеку PHP, потому что в итоге вы написали бы в основном те же вещи.

Как видно из примера, они получают идентификатор пользователя ($uid), вызывая getUser:

if ($session) {
  try {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

$ uid - это просто целое число, а $me - данные для текущего пользователя (которые, как вам кажется, вам не нужны). Те же данные можно получить, позвонив по номеру:

$me = $facebook->api('/' . $uid); //Generates https://graph.facebook.com/[uid]

Проблема, с которой я сейчас столкнулся в этом примере, заключается в том, что функция curl внутри класса Facebook (метод makeRequest) по какой-то причине возвращает содержимое NO. Итак, $me заканчивается ничем, что заставляет пример все еще говорить «Вы не подключены». Но, если бы вы вывели $uid, вы бы увидели, что он действительно содержит ID текущего пользователя.

1 голос
/ 26 апреля 2010

приватная функция setCookieFromSession ($ session = null)

терпит неудачу, потому что параметром $ domain является emtpy. Я использую это для локального тестирования:

if ($domain != '') {
    setcookie($cookieName, $value, $expires, '/', '.' . $domain);
} else {
    setcookie($cookieName, $value, $expires, '/');
}
0 голосов
/ 17 июля 2011

Я думаю, что вы можете использовать это http://3aroundweb.in/facebook-connect-using-graph-api/ Он содержит практическое руководство и рабочий код для загрузки:)

0 голосов
/ 24 апреля 2010

Одна вещь, которая помогает, это проверка заголовков ответов от Facebook, иногда (редко) они могут быть информативными.

Я обнаружил, что вам нужно позвонить в / oauth / authorize (с параметрами запроса), чтобы авторизовать сайт / приложение, чтобы Facebook предоставил вам маркер доступа.

0 голосов
/ 23 апреля 2010

Вы проверили последнюю версию facebook.php от github? Последняя версия учитывает магические кавычки и, следовательно, будет возвращать сеанс вместо нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...