2013-03-27 4 views
2

Я использую php-sdk для создания сеанса при входе в систему моего сайта через fb. После входа пользователь будет перенаправлен на файл с именем fb_redirect.php. На этой странице имеется следующее:Возврат пользовательского токена вместо токена доступа

$facebook = new Facebook(array('appId' => '123456789', 
            'secret' => '123456789', 
            'cookie' => true)); 

$access_token = $facebook->getAccessToken(); 
//$facebook->setAccessToken($access_token); // you do not need to set the token if there is one, so this should be conditional to if your switching tokens or setting a token from an external sdk. 

Когда

$access_token 

вторит здесь, он отображает маркер пользователя. Но на другой странице мне нужно использовать разрешение publish_actions, которое мое приложение запросило, и опубликовать пользовательское действие на временной шкале пользователя. Чтобы это произошло, мне нужно, чтобы токен доступа был установлен на токен пользователя. Но по какой-то причине на других страницах $ access_token всегда установлен токен доступа, а не токен пользователя. Как я могу вручную установить его обратно на токен пользователя?

ответ

0

Быстрый и грязный метод, это не относится к истечению срока действия.

if (!$_SESSION['fb_YourAppID_access_token']) { 
$access_token = $facebook->getAccessToken(); 
if ($access_token) { 
$_SESSION['your_token'] = $access_token; 
} 
}else{ 
$access_token = $_SESSION['fb_YourAppID_access_token']; 
$_SESSION['your_token'] = $access_token; 
} 

это будет выглядеть на существующий маркер в браузере, если не найдено, он будет просить PHP SDK, что текущий токен, если есть знак в SDK, он устанавливает свой маркер сеанса для текущих маркеров доступа , если он не сохранит его.

2

Если вы используете поток на стороне сервера, то вам нужно сохранить его где-нибудь (куки-файл или сеанс на стороне сервера или таблицу DB) и загрузить его обратно, когда пользователь вернется.

+1

Вы имеете в виду, как вручную вставить его в БД и запросить его, когда мне нужно его снова использовать? – Lance

+0

Да, если у вас есть способ надежной идентификации ваших пользователей, это сработает. – Yuliy

+0

Я просто попытался сохранить токен пользователя в качестве переменной сеанса. Я заметил, что это работает на какой-то странице. Тем не менее, для тех, которые необходимо использовать для публикации пользовательского действия, он не отображается при повторном эхо. – Lance

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