2012-04-18 160 views
0

首先,我下載了Facebook PHP SDK和應用在這裏的第一個答案: Using Facebook PHP-SDK 3.x to register/login user with Codeigniter 2.1.0PHP SDK +代碼點火器

在我的控制器:

  1. 我試圖讓用戶:$此 - > facebook->的getUser(); ..如果它是0,我調用另一個函數$ this-> facebook_login(); - 否則我將一些數據保存在數據庫中,例如名稱。

  2. 在facebook_login()中,生成了一個登錄URL:$ this-> facebook-> getLoginUrl() - 並傳遞給顯示它的視圖。

  3. 到目前爲止,我點擊登錄網址並重定向到Facebook,要求獲得批准和身份驗證等 - 然後將我重定向回「1」頁面。

  4. 問題是,getUser返回零。我打印了$ SESSION變量,發現只有fb {appId} _state正在設置。

我試圖創建另一個PHP文件(login.php中)是不是在CI文件夾下面的代碼:

<?php 

define('BASEPATH', ''); 
require_once('application/libraries/facebook.php'); 

$fb = new Facebook(array('appId'=>'...', 'secret'=>'...')); 

$user = $fb->getUser(); 

if($user == 0){ 
    $login = $fb->getLoginUrl(); 
    echo '<a href="'.$login.'">Login</a>'; 
} else { 
    print_r($fb->api('/me')); 
} 

?> 

如果我訪問那麼login.php中訪問該頁面中的「1 「上面 - getUser返回用戶ID,$ _SESSION包含用戶的詳細信息。因此,我想這個問題是CodeIgniter,但我不知道如何解決它。

我搜索並嘗試了幾種解決方案,但這是我能做的最好的。如果可能的話,我不想使用JS SDK。

謝謝

+0

在問題開始處的鏈接中找到的構造函數中,在加載facebook庫之前添加以下內容:parse_str($ _SERVER ['QUERY_STRING'],$ _REQUEST); – GalalAly 2012-04-18 13:59:39

+0

在application/config/config.php中cookie_domain變量是否正確地設置爲您的域名? – 2012-04-19 14:07:28

+0

是的。我想出解決方案並將其作爲評論發佈。謝謝:) – GalalAly 2012-04-23 01:13:11

回答

0

我找到了解決方案,並寫下它here博客文章。

+0

隨意標記爲「接受的答案」。 [更多信息](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)如果需要。 – 2012-04-23 01:33:24

+0

@GalalAly請不要鏈接到外部網站,因爲不能保證網站將來會存在。相反,在這裏發佈你的解決方案 – Sampson 2012-04-23 01:37:14