Я мигрирующей мой старый приложение FB на новый график API с помощью PHP APIКак проверить, если пользователь вошел в систему с новым facebook PHP API
У меня есть две страницы: казенные (которые не требуют входа пользователя) и частные (которые)
Таким образом, код каждой страницы PHP в моем приложении работает следующим образом:
if (this_page_requires_user_login){
$facebook = new Facebook(...) ;
$session = $facebook->getSession ;
if (!$session){
$url =$facebook.getLoginUrl(array(next => current_page);
echo "<fb:redirect url=$url/>" ;
}
// the rest of the code continues here
Теперь, как вы можете видеть, этот способ работы направляет каждую страницу в URL входа и хотя он работает, он также медленный и добавляет & session = {bla} string до очень одного URL-адреса.
Мне нужен способ проверить, где пользователь уже зарегистрировался, прежде чем перенаправить его на страницу входа. Но я не могу найти такой метод в php api. Каков наилучший способ сделать это?
EDIT
Это, казалось, сделать трюк
if ($session) {
try {
$me = $facebook->api('/me');
if ($me) {
// here comes your code for user who is logged in
}
} catch (FacebookApiException $e) {
login()
}
}else{
login()
}
function login(){
$url =$facebook.getLoginUrl(array(next => current_page);
echo "<fb:redirect url=$url/>" ;
}
Если вы сохранили маркер доступа и использовать его, это не работает, потому что вызов API до сих пор работает без выбрасывания исключения, но тогда, когда вы перенаправить их на getLogoutUrl, например, он просто посылает их на главную страницу Facebook, вместо того, чтобы отправить вас обратно на ваш сайт – andrewtweber
@andrewtweber. Благодарю. –
Вы должны были расшифровать URL-адрес раньше, поэтому вы не перенаправили: Php echo rawurlencode ($ logoutUrl); ?> –