Пользование библиотекой Facebook Graph APIs PHP

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

Я просто хочу аутентифицировать пользователя и вернуть идентификатор пользователя. То, что я действительно хочу знать, - то, что сделать, после того как пользователь вошел в систему Facebook и возвратился в мой сайт. Существуют данные, названные 'сессией' в URL. Это должно быть сохранено для непрерывного получения идентификатора пользователя? Это действительно не очевидно, мне, от образцов или (отсутствие) документация.

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

Править:

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

Кто-либо еще испытал проблемы как это? Действительно ли возможно, что работа localhost вызывает это?

Править:

Я загрузил точно те же два файла на хост, и он работал отлично. Это сохранило cookie и показало всю информацию, это должно. Наиболее вероятно, что работа localhost вызывает проблемы. Я изменил настройки под вкладкой Connect на приложении Разработчика Facebook, но все еще никакой удаче.

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

5
задан j82374823749 24 April 2010 в 14:33
поделиться

4 ответа

В 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 ) по какой-то причине не возвращает содержимого. Итак, $ me заканчивается ничем, поэтому в примере все еще говорится «Вы не подключены». Но если вы выведете $ uid , вы увидите, что он действительно содержит идентификатор текущего пользователя.

5
ответ дан 14 December 2019 в 19:06
поделиться

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

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

0
ответ дан 14 December 2019 в 19:06
поделиться

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

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

if ($domain != '') {
    setcookie($cookieName, $value, $expires, '/', '.' . $domain);
} else {
    setcookie($cookieName, $value, $expires, '/');
}
1
ответ дан 14 December 2019 в 19:06
поделиться

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

0
ответ дан 14 December 2019 в 19:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: