$ facebook-> getUser () возвращает идентификатор пользователя после выхода из системы - PullRequest
1 голос
/ 15 декабря 2011

Как проверить, действительно ли пользователь вошел в систему? $facebook->getUser() по-прежнему возвращает идентификатор после выхода из системы. Нужно ли делать что-то вроде $facebook->api('/me'), только чтобы проверить, действительно ли пользователь вошел в систему?

Ответы [ 3 ]

5 голосов
/ 25 декабря 2011

Что ж, FB PHP SDK, на мой взгляд, довольно сложен, поскольку использует файл cookie, отправляемый из Facebook при входе в Facebook.Этот файл cookie не удаляется при выходе из системы.Из-за этого в приведенном ниже коде переменная $ uid может хранить правильный идентификатор пользователя Facebook:

$uid = $facebook->getUser();

Так что, насколько я знаю, вызов $facebook->api('/me'); скажет правду, вошел ли пользователь в систему илинет.

try {
   $facebook->api('/me');
   /* user is really logged into FB */
} catch (Exception $e) {
   /* user is not currently logged into the FB */
}

Я использую приведенный выше код в своем производственном приложении, и он хорошо работает.

2 голосов
/ 15 декабря 2011

getLoginStatusUrl должно сработать. Я думаю, что если вы запрашиваете offline_perms, то у вас есть доступ к user_id и так далее. Я не знаю, если вы сделали, но, скорее всего, это должно быть проблемой

0 голосов
/ 15 декабря 2011

Вы пробовали метод, описанный в документации Facebook PHP SDK ?

$params = array(
  'ok_session' => 'https://www.myapp.com/',
  'no_user' => 'https://www.myapp.com/no_user',
  'no_session' => 'https://www.myapp.com/no_session',
);

$next_url = $facebook->getLoginStatusUrl($params);

Возвращает URL-адрес в зависимости от статуса входа пользователя в Facebook.Вы можете получить другой URL в зависимости от того, вошел ли пользователь в систему, не подключен или вышел из Facebook.

...