2012-04-18 99 views
0

我使用Facebook PHP SDK將Facebook與我的網站集成,我已登錄到我的Facebook帳戶,但是當我進入我的網站時,自動登錄不會發生?使用Facebook自動登錄PHP SDK不起作用

$facebook = new Facebook(array(
     'appId' => XXXXXX, 
     'secret' => XXXXXXXXXXXXXX, 
    )); 



$user = $facebook->getUser(); 

// Login or logout url will be needed depending on current user state. 
if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(); 
} else { 
    $loginUrl = $facebook->getLoginUrl(); 
} 

這裏$user值爲「0」,而進入到我的網頁後,我進入Facebook帳戶。

如果我通過我的網站的Facebook登錄登錄。它的作品,即$user將獲得一個ID。

回答

0

但是當我進入我的網站時,自動登錄不會發生?

單獨使用PHP SDK無法爲用戶重新訪問您的頁面提供自動登錄,因爲它無法讀取在其自己的域下設置的Facebook Cookie。

您必須將其與JS SDK結合使用,它可以進行跨域請求,因此能夠確定當前登錄到Facebook的用戶以及他們是否訪問過您的頁面並在之前使用過您的應用。

FB.getLoginStatus是爲此使用的方法;如果它返回用戶已連接到您的應用程序,您可能會觸發JavaScript的頁面重新加載,以便PHP SDK也會知道該用戶。 (如果您沒有重新加載頁面,PHP只會在下次單擊頁面中的鏈接後纔會知道該用戶,從而觸發對服務器的下一個請求。)