0

我很難理解Facebook在與用戶登錄時如何與我的服務器通信(在批准我的Facebook應用程序後)。我一直在尋找通過指南和其他Stackoverflow問題幾個小時,但似乎無法得到它的掛鉤。關於http://developers.facebook.com/的文檔也不是很有幫助。Facebook登錄基礎知識

我想要做的是在我的頁面上打開Facebook登錄按鈕,該按鈕打開Facebook登錄窗口(使用Facebook的Javascript SDK)。當用戶登錄Facebook並批准我的應用程序時,我想獲取用戶的數據(姓名,電子郵件,年齡)並將其存儲在我的數據庫中。我如何獲得這些數據,安全(服務器端確認/授權)?

基本上按照這個順序;

  • 用戶點擊登錄按鈕,在我的網站
  • 彈出顯示,用戶可以登錄&批准的應用程序在Facebook上
  • 檢查,如果用戶在通過獲取已經登錄前用戶的USER_ID
  • 如果這是用戶第一次登錄,用戶的Facebook數據(具體是:全名,照片,的電子郵件地址,年齡)是由我收集並保存在我的數據庫

後,用戶在Facebook彈出窗口中記錄/批准應用程序,然後發送用戶數據到哪裏?

回答

1

用戶批准該應用後,用戶的數據不會發送到任何地方。您需要進行API調用才能檢索數據。

Facebook是OAuth供應商。您使用Facebook登錄,以便用戶可以授予您訪問她的Facebook數據的權限(例如電子郵件,好友列表,消息,新聞提要等)。您還可以獲取代表用戶採取操作的權限(例如上傳照片,發佈到新聞Feed等)。在啓動OAuth流程時,您可以指定要向用戶請求哪些權限。這些被稱爲示波器

在彈出窗口中發生的授權流程爲用戶授予訪問您請求的數據的權限。此權限表示爲訪問令牌,您每次想要檢索用戶數據或嘗試代表用戶執行某些操作時都必須使用該權限。

一旦你有訪問令牌,你可以使用Facebook Graph API從Facebook獲取你想要的任何數據。如果您嘗試訪問某些未獲得許可的數據,則API方法將返回拒絕訪問錯誤。

我想給有關從Facebook的開發者網站的範圍和訪問令牌一些聯繫,但我的名譽分數太低:)

+0

所以我想要做的就是發送訪問令牌,這是我得到使用Facebook的JS SDK,通過例如AJAX請求發送到我的服務器,然後使用該訪問令牌來執行我的註冊/驗證?這有多安全,訪問令牌有效多久? – Unidan

+1

@WillB這是正確的。您可以在[Facebook開發人員網站]上找到有關訪問令牌的詳細信息(https://developers.facebook.com/docs/facebook-login/access-tokens/)。 您使用SSL提出請求,所以我會說他們非常安全。 只需瀏覽Facebook Developers網站上的文檔。它非常全面。 –

+0

現在這一切都很有意義,我感到非常愚蠢,因爲沒有立即理解它。我一直在以完全錯誤的方式看待它。謝謝! – Unidan