2013-02-26 94 views
1

我試圖通過facebook登錄激活cookie,所以它並不總是依賴於那裏的會話,但每當我設置sharedSession爲true時,我得到一個「頁面isn 't重定向正確「錯誤頁面。這是我想讓它的方式,所以Facebook登錄使用Cookie?我在facebook上使用了github上的最新代碼(今天下載了一個新手) - >https://github.com/facebook/facebook-php-sdkfacebooks sharedSession返回「頁面沒有正確重定向」

我沒有使用JavaScript SDK。在發送任何頭文件之前,下面的所有編碼都會被觸發。如果我拿出sharedSession,它會正確登錄我,但它不會存儲所需信息的cookie。

繼承人我使用

$facebook = new Facebook(array(
    'appId' => $Sets['facebook']['appId'], 
    'secret' => $Sets['facebook']['appSecret'], 
'sharedSession' => true, 
// 'trustForwarded' => true 
)); 
$user = $facebook->getUser(); 
if($user){ 
    try { 
     // Proceed knowing you have a logged in user who's authenticated. 
     $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
     $user = null; 
    } 
} 
// the user is logged into facebook 
if($user){ 
    // I register them on my website.. 
    // and then send them to the index page 
    header('Location: /index.php'); 
} else { 
    // they are not registered through facebook 
    if(isset($_GET['error'])){ 
      // this happens when an error is found 
     die($_GET['error'].' error'); 
//  header("Location: /login/?error=".urlencode($_GET['error'])); 
     exit; 
    } else { 
      // send to facebook to log them in. 
     $loginUrl = $facebook->getLoginUrl($Sets['facebook']['scope_array']); 
//  die('sending to '.$loginUrl); 
     header("Location: ".$loginUrl); 
     exit; 
    } 
} 

你可以看到我把die()功能的任何重定向之前就有的編碼,這是對我的結束調試,看是否我可以計算出它是失敗,但它似乎發生後,用戶返回到網站..我也試過trustForward => true,但那並沒有解決它..

我所追求的是能夠讓用戶登錄在更長的時間內,每次訪問網站時都不必通過Facebook登錄。

發生什麼事情是用戶被困在一個循環試圖登錄Facebook被重定向到Facebook和我的網站之間,因爲用戶從未被驗證過。當我設置'sharedSession' => true

我試圖讓facebook sdk存儲從我的網站上的cookie到試圖登錄但沒有cookie被設置的個人計算機上。

回答

0

我對你的問題感到困惑。你想實現什麼:

1)如果你想設置存儲你的facebook user_id到cookie,你不必做任何事情。當oauth進程完成後,facebook將重定向到你的「redirect_uri」url,cookie由facebook設置爲一個cookie值:fbsr_xxxx(xxxx是你的appId)

2)如果你想讓用戶登錄時間更長,您需要設置您自己的會話值以確定用戶是否已登錄。換句話說,在facebook oauth流程之後,您的用戶登錄狀態與您的Facebook會話無關。

BTW:$ Users-> loginWithOauth,這個函數沒有定義,這個函數有什麼用?

+0

我正在嘗試做1)設置facebook cookie。現在在我的腳本中使用上面的代碼,沒有cookie在用戶登錄時被設置爲geting。這是在github上使用最新版本的facebook php sdk。 和'$ Users-> loginWithOauth'是我註冊用戶的腳本。 – Yohn 2013-03-12 07:18:43

+0

你的oauth進程不是很清楚,你應該先按照facebook服務器端的認證流程獲取代碼;在用戶授權您的應用程序後,Facebook會調用回調頁面,這是您發佈的腳本;你可以在這一步運行任何登錄邏輯。同樣,facebook cookie(fbsr_xxxx)由Facebook設置,而不是由您設置。請參考文章https://developers.facebook.com/docs/howtos/login/server-side-login/,希望這有幫助 – fuyi 2013-03-12 11:47:34

+0

我更新了一些最初的問題。我正在使用 - > https:// github。com/facebook/facebook-php-sdk,這是由Facebook推薦的。我遵循與示例登錄頁面相同的做法 - > https://github.com/facebook/facebook-php-sdk/blob/master/examples/example.php登錄用戶。一旦用戶被確認在接受用戶在我的網站上註冊的所有內容之後,通過facebook,但沒有設置cookie。那就是當我發現我們應該在Facebook的類配置中使用'sharedSession'=> true',那當我陷入重定向循環 – Yohn 2013-03-12 20:42:21

0

原因是未授予所需的權限,所以最終它會去facebook搜索令牌並返回。

檢查您需要的權限。