2014-10-20 48 views
1

我正在我的網站上使用Facebook進行登錄。 與我看到的大多數登錄不同,我的用戶可能已經註冊並希望連接到他們的Facebook。如果他們在網站上擁有帳戶時跳過槍並點擊「使用Facebook登錄」,他們最終可能會創建一個新帳戶......這是我們不想要的。Facebook登錄JS SDK和PHP SDK。在表單中傳遞access_token安全嗎?

取而代之,我設置了它們,以便他們使用Facebook登錄...並且在返回時,檢查fbID或fb電子郵件是否存在於當前數據庫中。如果不是,那麼將它們顯示爲登錄屏幕以正常登錄。那時他們會連接這兩個賬戶。我一直在研究這一段時間,我很驚訝我沒有看到這個方法在網絡上到處都是。對我來說似乎合乎邏輯。

爲了清楚起見,我使用FB JS SDK來做與facebook popup的登錄。然後在重定向之後,我使用FB PHP SDK從Facebook獲取fb用戶ID和用戶信息。

好的......所以......我一直有的一個問題是,在用facebook登錄後...然後重定向回正常的登錄屏幕,正常提交時,Facebook身份驗證無效。爲了完成以安全方式連接這兩個帳戶,我希望在用他們的Facebook ID更新數據庫之前再次對用戶進行身份驗證。

爲了做到這一點......我已決定使用第一次登錄來獲取fb access_token,然後使用access_token填充正常的登錄名。然後在正常提交後,我可以使用access_token獲取php sdk的用戶信息並將fb ID存儲在我的數據庫中。

但是,這是安全嗎?在表單中傳遞access_token?另外...我注意到有一種方法可以獲得「代碼」鍵,並用它來獲取access_token和user_info。但是,我不知道如何在使用fb JS sdk登錄時獲取「代碼」。

對此的任何想法將不勝感激。我希望我很清楚。 謝謝

回答

0

您不應該在客戶端和服務器之間傳輸access_token。如果有人被抓住,他們可以在您的Apps名稱下爲用戶執行操作。

我不確定我明白你的意思是「通過正常提交時,Facebook身份驗證無效」。

您是否閱讀過使用PHP SDK的認證指南?你可以在這裏找到他們:https://developers.facebook.com/docs/php/gettingstarted/4.0.0#authentication

使用FacebookJavaScriptLoginHelper你可以很容易地從登錄的用戶使用JS獲取信息到你的服務器。

對於JS SDK:https://developers.facebook.com/docs/javascript/quickstart/v2.1#login

+1

Thx爲答覆。我讀過這些。麻煩的是我需要在php中獲取變量,所以我使用js登錄後的php sdk。接下來,在您再次刷新頁面後,如我所說,php sdk不再獲取變量。 $ user和$ user_info現在都是空的。如果我無法通過access_token,有沒有辦法我可以a)從fb js sdk獲取'code'變量,然後在刷新時傳遞它?這會更安全嗎?我相信,如果我沒有弄錯,我可以使用代碼var以及應用程序祕密和應用程序ID來獲取access_token。謝謝 – mebrando 2014-10-21 14:06:02