2012-02-15 2 views
0

Я искал и пытался в течение нескольких часов, но я не могу понять это. Я использую приложение facebook, чтобы получить информацию о пользователе, поэтому пользователю нужно подключиться к приложению. При первом подключении пользователя он должен предоставить разрешение на приложение на facebook. Когда пользователь вернется в другой день, ему нужно снова нажать «Подключиться», но разрешение уже установлено.Подключитесь к приложению facebook дольше, чем сеанс

Я хочу, чтобы пользователь был подключен дольше, чем сеанс, поэтому ему не нужно нажимать на соединение каждый раз, когда он посещает сайт (в новом сеансе). Я много читал о offline_access и т. Д., Но это устарело и, вероятно, не то, что мне нужно, наконец. Я также прочитал некоторые решения от 2 лет назад, но они больше не работают.

Пример резюмировать:

Предположим, пользователь посещает мой сайт, и я ничего не знаю о нем. Несколько дней назад он разрешил мое приложение. Я хочу, чтобы он увидел Hello и logoutlink, ничего не делая. Я начинаю задаваться вопросом, возможно ли это?

// Create our Application instance. 
$facebook = new Facebook(
    array(
    'appId' => xxxxxxxxxx, 
    'secret' => xxxxxxxxxx, 
) 
); 

// Get User ID 
$fbuser = $facebook->getUser(); 

if($fbuser) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
    print 'Hello' . $logoutUrl; 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 

Заранее благодарю вас! С уважением

+0

Как долго вы ваш сайт печенье набор для истечь? – CoderFromOuterSpace

+0

Вам нужна ваша собственная сессия, нет ifs или buts. –

ответ

0

Я не думаю, что PHP является способ пойти с этим ... Вы должны использовать Facebook Javascript SDK (https://developers.facebook.com/docs/reference/javascript/), с которым вы можете зарегистрировать пользователя в ..

Если пользователь уже вошел в систему на facebook и имеет сеанс (и, конечно же, уже разрешил ваше приложение раньше), тогда вы все настроены, иначе пользователь должен будет войти в facebook или авторизировать ваше приложение.

использовать FB.getLoginStatus, чтобы проверить, если пользователь вошел в систему, если он не затем представить его с помощью кнопки, которая будет вызывать метод FB.login

0

Да, вы должны использовать только Facebook, чтобы получить определенные данные, то вы должны хранить все эти данные с уникальным fb_user_id в вашей собственной базе данных и создайте свой собственный сеанс для пользователя!

Таким образом, во время создания социальной плагины Facebook вы создаете пользователя в своей собственной базе данных, а затем во время каждого входа вы фактически создаете свой собственный сеанс, и если вы сделаете его безопасным, вы можете положиться на свой собственный сеанс, если вы используете любой материал API facebook и ваш сеанс закрыт, он будет обрабатывать его на сервере facebook, он может попросить пользователя войти в систему, если они вышли из фейсбука, но большинство людей даже не выходит из системы, поэтому просто воссоздает сеанс!

так что-то вроде:

// Create our Application instance. 
$facebook = new Facebook(
    array(
    'appId' => xxxxxxxxxx, 
    'secret' => xxxxxxxxxx, 
) 
); 

inlcude "my_session_stuff.inc"; 

// Get User ID 
if(!$user->user_exists){ 
    $fbuser = $facebook->getUser(); 
}else{ 
    $fbuser = $user; 
} 

if($fbuser) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
    $expires = (60*60*24*365);//expire in a year 
    $user = $myownSession->log_user_out($logoutUrl); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
    $user = $myownSession->log_user_in($getLoginUrl,$expires); 
} 
+0

+1 да, facebook не собирается программировать весь сайт для вас LOL. Вам нужен ваш собственный сеанс, поскольку этот ответ подсказывает –