2012-06-22 19 views
1

我想在我的網站做Facebook登錄,我遇到了問題。我使用this類來使用Facebook登錄在PHP中。Facebook登錄使用PHP然後重定向到URL與獲取參數

我已經在我的網站上創建一個PHP文件名爲login.php包含下面的代碼

$facebook = new FacebookLogin(APP_ID, APP_SECRET); 
$user = $facebook->doLogin(); 
// then initialize the SESSION variables here using $user info 
header("Location: ' . $url); 

現在的問題是,我想通過獲得的參數給login.php,並從這種說法,我可以知道$ url,我將重定向到。但FacebookLogin類進行重定向調用,這樣在login.php中的get參數丟失,所以我決定把爭論的login.php這一行添加到$this->urlFacebookLogin構造:

$this->my_url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']; 

問題現在,這是不是工作壓力太大作爲verifyLogin(),這條線返回空結果的URL是不正確的:

$result = @file_get_contents(self::TOKEN_URL . '?' . http_build_query($data)); 

和它應該返回access_token

那你覺得呢?

簡單地說,我需要一種方式,用戶點擊一個鏈接來登錄Facebook,但在返回給用戶之前,我想通過我的PHP代碼,然後重定向到一個由用戶指定的url參數。

對不起,它可能很愚蠢,但我花了很多時間試圖解決這個問題,並在幾個小時後有一個截止日期。

感謝您的幫助

+0

您可以將重定向URL存儲爲會話變量。你嘗試過嗎? –

+0

是的,我已經嘗試過,但是當我嘗試再次訪問它時,未找到它! –

+1

我已經搜索並發現在重定向之前存儲會話變量不起作用! –

回答

3

什麼你試圖實現的是與PHP-SDK使用簡單:

$facebook = new Facebook(array(
    'appId' => 'YOUR_APP_ID', 
    'secret'=> 'YOUR_APP_SECRET' 
)); 

$loginURL = $facebook->getLoginUrl(array(
    //'redirect_uri'=>'URL_WHERE_USER_WILL_BE_LANDED_AFTER_LOGIN' 
)); 

header("Location: {$loginURL}"); 

如果你想一些數據傳遞到您的應用程序比用戶以後的步驟回來授權,通作爲redirect_uri參數getLoginUrl中提供的URL的URL參數的一部分。

因此,如果例如您將通過http://my.app.com/?link_to_visit=some_link作爲redirect_url您將被重定向到該URL而不是當前URL(在授權之前)。

後來你可以:

$facebook = new Facebook(array(
    'appId' => 'YOUR_APP_ID', 
    'secret'=> 'YOUR_APP_SECRET' 
)); 

$userId = $facebook->getUser(); 
$accessToken = $facebook->getAccessToken(); 

$linkToVisit = $_REQUEST['link_to_visit']; 

BTW,爲人類的緣故不使用與幾年之前未知的聲譽有利於官方Facebook PHP-SDK的寫人一些愚蠢的客戶端在平臺中遵循所有更改(並且它們很大)...

+0

非常感謝您的評論,我已經明白你的意思了,但是做完之後,我收到一個錯誤「這個網頁有一個重定向循環」......實際上我已經創建了2個文件,就像你說的,第一個代碼片段在文件tmp_login.php和下一個url ='http://localhost/handle_login.php?next_uri = http://www.foobar.com' 然後handle_login.php文件中的第二個代碼片段,但重定向$ loginURL我在收到handle_login.php之前收到此錯誤 非常感謝 –

+1

現在沒問題,我已經檢查了getLoginUrl()文檔,發現它是'redirect_uri'而不是'next' https:// developers。 facebook.com/docs/reference/php/facebook-getLoginUrl/ 非常感謝您的努力 –

+0

對不起,但是當handle_j ob.php被執行$ facebook-> getUser()總是返回0! –