2013-02-20 38 views
4

我使用hybridauth通過Facebook登錄用戶到我的PHP網站。我可以通過Facebook應用程序認證後的回調URL傳遞一個變量

$hybridauth = new Hybrid_Auth($config); 
$facebook = $hybridauth->authenticate("Facebook"); 

$facebook_user_profile = $facebook->getUserProfile(); 

$config包含了我的應用程序ID和祕密密鑰)

這一切運作良好,但我想將用戶重定向時,基於他們已經登錄該頁面返回給回調URL從中,以便我可以在登錄後將它們返回到此位置。

有沒有一種方法來發送自定義變量與認證(如URL,甚至一個簡單的ID),這樣我就可以在過程的另一端閱讀並瞭解認證請求啓動了哪裏。

這是可能的,還是我吠錯了樹?

額外的榮譽,如果有人知道如何做到這一點的混合使用,但把我在正確的軌道上的任何建議,更歡迎屆時。

回答

7

無論何時使用服務器端或客戶端登錄,最終登陸都會發生在FB登錄對話框URL上。

看到FB login architecture Server端登錄,瞭解流動。

登錄URL看起來像

https://www.facebook.com/dialog/oauth? 
client_id=YOUR_APP_ID& 
redirect_uri=YOUR_REDIRECT_URI& 
state=SOME_ARBITRARY_BUT_UNIQUE_STRING 

在這裏,您可以提到了redirect_url PARAM和登錄流程Facebook將嘗試重定向到指定的URL後的任何URL。您指定的網址必須是具有與您的應用設置中指定的相同基本域的網址。

此外,如果你需要保持這可能登錄後使用的任何額外的數據,你可以使用state PARAM。你給這個參數的值將被返回而沒有任何改變。

我希望,如果你搜索HybridAuth代碼,你可以能找出你需要通過這些細節的地方。

+0

狀態好像我想要什麼,我會通過混合文檔,看看我能找到。 – Finglish 2013-02-27 14:03:58

+1

謝謝!對於我有限的需求,向redirect_uri添加變量是最好的方式,因爲混合不支持「狀態」變量。 – Finglish 2013-03-03 18:30:47

3

我能想到的兩個簡單的選擇:

GET參數: 嵌入自定義變量作爲回調URL GET參數。 (不要忘記對數據進行URL編碼)

會話: 在啓動身份驗證方法之前,在用戶會話中設置自定義變量。

1

確保您已在$config通過redirect_url

或者您可以在設置會話& cookie後使用php header()在您的login()功能。 例如:

header("Location: http://www.example.com/some/where/else"); /* Redirect */ 

希望它能幫助你。 謝謝。