2012-12-04 80 views
0

我在我的網站中使用Facebook功能登錄。問題是在獲得成功的身份驗證後,$facebook->getUser()方法返回0,因爲它沒有在代碼的其餘部分之前。爲了解決這個問題,我修改了我的APP ID和密鑰,我也創建了新的APP,但仍然無法使用。谷歌也做了很多東西,但沒有取得任何成功。facebook-> getUser()方法返回0

以下是我的代碼:

public function facebookregisterAction() { 
require 'auth/src/facebook.php'; 

$facebook = new Facebook(array('appId' => 'xxxxxxxxxxxxxxx','secret' => 'xxxxxxxxxxxxxxxxxxxxxxx','cookie' => true)); 

$session = new Zend_Session_Namespace('user'); 
$user = $facebook->getUser(); 

if ($session->islogout != 1) { 
     if ($user) { 
      try { 
        $user_profile = $facebook->api('/me');      
       }catch(Exception $e){} 
     } 
} 

感謝

回答

1

作爲一般的答案,我發現它有助於開始在Facebook的PHP-SDK目錄使用example.php。

就我而言,我的測試應用程序的URL與站點URL不同。 example.php文件提供了一個足夠有用的錯誤消息來診斷和糾正問題。

這也是實際使用的一個很好的例子。

這樣說,有一部分你似乎失蹤了。用戶將不得不訪問您的應用的Facebook登錄URL,然後API纔會非常有用(除了獲取公共信息之外)。爲了找到這個網址,請嘗試:

$url = $facebook->getLoginUrl(); 

可以給用戶一個鏈接點擊,或靜靜地將用戶重定向到這個URL,如果您需要登錄。 A「!你好,世界」 - 類型開始會是這樣的:

if ($user) { 
    $url = $facebook->getLogoutUrl(); 
    $message = "Click here to log out"; 
} else { 
    $url = $facebook->getLoginUrl(); 
    $message = "Click here to log in"; 
} 

print "<a href=$url>$message</a>"; 

但你會快速運行到的東西,是由使用example.php文件覆蓋了:「訪問令牌」(如會話ID )不會在用戶註銷Facebook時清除。你的應用程序仍然會看到一個有效的用戶對象,但任何命中Facebook的API調用都將失敗。

+0

@GargabtuChet:謝謝你的建議我會盡力的。但是你認爲我的代碼有什麼問題嗎? – Sky

+0

我已編輯以包含更多細節;你沒有提到你在訪問問題代碼之前是否已經登錄了URL,所以這可能是一個問題。 – GargantuChet