2011-12-15 3 views
1

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

ответ

5

Ну, 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 */ 
} 

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

+0

Интересно, почему facebook не удаляет cookie? –

+0

@jiewmeng, cookie размещается на вашем домене. Facebook не контролирует его, кроме JS-SDK (или другого SDK), который вы используете. Фактически они удаляют cookie, если они могут (по крайней мере, по JS-SDK), но если пользователь выходит из системы, не взаимодействуя с вашим приложением/сайтом cookie, ваша ответственность. –

+0

Точно, поэтому я использую как PHP, так и JS Facebook SDK, чтобы получить полную функциональность API Facebook. –

0

Вы пробовали метод, подробно описанный в 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.

+0

Хорошо, но получил URL-адрес, когда выйдет из системы, у меня есть что-то вроде '... no_session = 0 & no_user = 0 & ok_session = 1 ...' ... что означает, что я вошел в систему в любом случае. Когда я иду на facebook.com, я не вошел в систему ... –

2

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

+0

Erm Я новичок в разработке FB, я просто попробовал демо-версию PHP SDK. Где я могу посмотреть разрешения, которые я просил? –