Как проверить, действительно ли пользователь зарегистрирован? $facebook->getUser()
по-прежнему возвращает идентификатор после выхода из системы. Нужно ли мне делать что-то вроде $facebook->api('/me')
, чтобы проверить, действительно ли пользователь зарегистрирован?
ответ
Ну, FB PHP SDK на мой взгляд довольно сложно, потому что он полагается на файл cookie, отправленный из Facebook, когда вы входите в Facebook. Этот файл cookie не удаляется во время выхода из системы. Из-за того, что в коде ниже переменный $ UID может хранить правильный пользователь facebook ID:
$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 */
}
Я использую вышеуказанный код в своем производственном приложении, и он хорошо работает.
Вы пробовали метод, подробно описанный в Facebook PHP SDK Documentation?
$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.
Хорошо, но получил URL-адрес, когда выйдет из системы, у меня есть что-то вроде '... no_session = 0 & no_user = 0 & ok_session = 1 ...' ... что означает, что я вошел в систему в любом случае. Когда я иду на facebook.com, я не вошел в систему ... –
getLoginStatusUrl должен сделать трюк. Я думаю, что если вы попросите offline_perms, чем у вас есть доступ к user_id и так далее. Я не знаю, если бы вы это сделали, но, скорее всего, это должно быть проблемой.
Erm Я новичок в разработке FB, я просто попробовал демо-версию PHP SDK. Где я могу посмотреть разрешения, которые я просил? –
Интересно, почему facebook не удаляет cookie? –
@jiewmeng, cookie размещается на вашем домене. Facebook не контролирует его, кроме JS-SDK (или другого SDK), который вы используете. Фактически они удаляют cookie, если они могут (по крайней мере, по JS-SDK), но если пользователь выходит из системы, не взаимодействуя с вашим приложением/сайтом cookie, ваша ответственность. –
Точно, поэтому я использую как PHP, так и JS Facebook SDK, чтобы получить полную функциональность API Facebook. –