17
我現在用的是PHP API如何檢查是否用戶登錄與新的Facebook 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
現在你可以看到,遠期工作的每一個頁面的登錄網址的這種方式雖然它工作,但它也很慢,並附加& session = {bla}字符串到單個網址。
我需要一種方法來檢查用戶已登錄的位置,然後我將他重定向到登錄頁面。但我無法在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/>" ;
}
如果已經存儲訪問令牌,並使用它,這是行不通的,因爲API調用仍然有效,沒有拋出異常,但是當你將其重定向到getLogoutUrl例如,它只是將他們到Facebook的主頁,而不是把你送回你的網站 – andrewtweber 2013-03-04 23:00:25
@andrewtweber。謝謝。 – 2013-11-25 12:09:21
你必須解碼的網址之前,這就是爲什麼你不重定向: <?php echo rawurlencode($ logoutUrl); ?> – 2014-02-12 17:03:36