Я перемещаю свое старое приложение FB в новый график API с помощью API PHP
У меня есть две страницы: общедоступные (которые не требуют никакого пользовательского входа в систему) и частные (которые делают),
Таким образом, код каждой php страницы в моем приложении работает следующим образом:
if (this_page_requires_user_login){
$facebook = new Facebook(...) ;
$session = $facebook->getSession ;
if (!$session){
$url =$facebook.getLoginUrl(array(next => current_page );
echo "" ;
}
// the rest of the code continues here
Теперь как Вы видите, этот способ работать вперед каждая страница к URL входа в систему и в то время как это работает, это также медленно и добавляет &session = {bla} строка к очень единственному URL.
Мне нужен способ проверить, где пользователь уже зарегистрирован, прежде чем я перенаправлю его к loginpage. Но я не могу найти такой метод в php API. Что лучший способ состоит в том, чтобы сделать это?
Править
Это, казалось, добивалось цели
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 "" ;
}
Если я правильно понял ваш код, только если сессия не возвращается, вы делаете перенаправление? Согласно комментариям в примере Facebook, даже если вы получаете сессию обратно, вы не можете считать, что она все еще действительна. Только попробовав вызов API, который требует входа в систему, вы сможете знать наверняка. Это лучший способ, который я видел, чтобы надежно определить статус входа/выхода.
if ($session) {
try {
$me = $facebook->api('/me');
if ($me) {
//User is logged in
}
} catch (FacebookApiException $e) {
//User is not logged in
}
}