[英]How to check if user is logged in with new facebook php api
我正在使用PHP API將舊的FB應用程序遷移到新的圖形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}字符串附加到非常單個URL。
在將用戶重定向到登錄頁面之前,我需要一種方法來檢查用戶已登錄的位置。 但我在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 "<fb:redirect url=$url/>" ;
}
如果我正確地讀取您的代碼,只有在沒有返回會話時才進行重定向嗎? 根據Facebook的例子中的評論,即使你回來了會議,你也不能認為它仍然有效。 只有嘗試一個需要登錄用戶的API調用才能確定。 這是我看到可靠地確定登錄/注銷狀態的最佳方式。
if ($session) {
try {
$me = $facebook->api('/me');
if ($me) {
//User is logged in
}
} catch (FacebookApiException $e) {
//User is not logged in
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.