Facebook PHP SDK: getAccessToken неверно при обновлении
В моем приложении facebook я регистрирую пользователя с помощью Javascript SDK. Если все в порядке, я перенаправляю его на эту страницу PHP (предназначенную для иллюстрации моей проблемы):
Test.php :
<?php
include('config.php');
require('phpsdk.php');
$access_token = $facebook->getAccessToken();
echo $access_token;
echo "<br /><br />";
$user = $facebook->getUser();
echo $user;
?>
(phpsdk.php обрабатывает инициализацию PHP SDK)
Доступ test.php в ПЕРВЫЙ раз возвращает действительный маркер доступа и идентификатор зарегистрированного пользователя. Однако, когда я обновляю страницу, маркер доступа становится типа AppID|AppSecret. Пользователь все еще вошел в систему: getUser все еще возвращает правильный идентификатор пользователя.
Кто-нибудь знает, в чем причина этого?
2 answers
Не рекомендуется вызывать getAccessToken();
снова и снова так, как вы описали.
Сначала вы должны попробовать проверить, находится ли токен в браузере в качестве сеанса, а если нет, то попробуйте использовать SDK
, чтобы найти или запросить его.
- Проверьте браузер для пользователя, если пользователь не вызывает sdk для пользователя, если по-прежнему значение null или 0, аутентификация или повторная аутентификация.
- Если пользователь, проверьте браузер на наличие access_token, если нет токена, вызовите sdk для токена.
<?php
session_start();
include('config.php');
require('phpsdk.php');
// need to replace Your_App_ID and YourAppId with your applications id.
$facebook = new Facebook(array(
'appId' => 'Your_App_ID',
'secret' => 'Your_App_Secret',
'cookie' => true, // enable optional cookie support
));
if(isset($_SESSION['fb_YourAppId_user_id'])){
$user = $_SESSION['fb_YourAppId_user_id'];
}else{
$user = $facebook->getUser();
}
if($user){
if(isset($_SESSION['fb_YourAppId_access_token'])){
$access_token = $_SESSION['fb_YourAppId_access_token'];
}else{
$access_token = $facebook->getAccessToken();
}
}
echo $user;
echo "<br /><br />";
echo $access_token;
?>
Очистка сеанса Facebook с помощью php sdk в перенаправлении при выходе пользователя из системы.
Logout.php перенаправление пользователя и использование sdk для очистки данных сеанса.
Пример URL-адреса перенаправления. yourdomain.com/Logout.php?destroy=true
См.: https://developers.facebook.com/docs/reference/php/facebook-destroySession/
<?php
session_start();
require './src/facebook.php';
$facebook = new Facebook(array(
'appId' => 'appID',
'secret' => 'appSecret',
'cookie' => true, // enable optional cookie support
));
if(isset($_GET['destroy'])){
$facebook->destroySession();
}
?>