2010-04-22 6 views
5

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

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

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

Edit:

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

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

Edit:

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

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

ответ

5

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

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


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

Facebook класса представлены в facebook.php не нужно использовать API, но обеспечивает несколько удобства для вас, например, поставив вместе общие URL-адреса, анализ данных сеанса (который передается в URL, а затем хранить в файле cookie), превращая сообщения об ошибках (объект JSON с ключом «ошибка») в исключение 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] 

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

+0

это хранить ли его в печенье самого по себе или мне нужно специально запустить функцию для этого? Я установил cookie в true при объявлении класса facebook, но при проверке файлов cookie в Firefox он, похоже, ничего не хранит. – j82374823749

+0

@ briggins5 Похоже, он делает это, когда вы вызываете 'getSession'. – Nicole

+0

Я звонил $facebook->getLoginUrl() и getSession, но все же куки-файлы не хранятся, кроме некоторых из них под категорией Facebook, но они не связаны напрямую и, вероятно, не будут в любом случае. – j82374823749

0

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

+0

Спасибо, Питер, да, у меня есть эта версия. Может быть, обновление все равно. Похоже, что только вызов CURL ничего не возвращает (вообще). – Nicole

0

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

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

+0

Похоже, что существует проблема при использовании localhost вместо общедоступного сервера. Насколько я могу сказать, библиотека PHP обрабатывает сама авторизация, поскольку она действительно создает идентификатор пользователя, но не создает cookie. – j82374823749

1

частная функция setCookieFromSession ($ сессии = нуль)

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

if ($domain != '') { 
    setcookie($cookieName, $value, $expires, '/', '.' . $domain); 
} else { 
    setcookie($cookieName, $value, $expires, '/'); 
} 
+0

Спасибо за ответ. Это решило проблему работы на локальном хосте. – j82374823749

+0

Итак, каково должно быть значение $ domain при работе на localhost? – BlueSilver

-1

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

+1

Этот вопрос уже более года, на него был дан ответ, и эта ссылка мертва. – j82374823749

Смежные вопросы