3

嘗試將facebook登錄添加到我正在處理的項目上的現有登錄系統。使用FB JS SDK構建角度。這主要是爲了允許無摩擦的登錄,並且目前還沒有關於使用訪問令牌與FB API進行進一步調用的討論。Facebook登錄到現有的用戶數據庫和訪問令牌

所以,作爲一個新的用戶,他們打FB登錄,接受權限等,並與accesstoken,FB userid

觸發我回一個訪問令牌等新用戶在我的數據庫中創建,沿

我現在如何使用現在存儲在我的數據庫中的useridaccesstoken來驗證用戶身份?據我所知,訪問令牌實際上在每次頁面加載/請求時都會發生變化,所以下次用戶點擊FB登錄時,或者我檢查FB登錄狀態時,唯一不變的是userid

曾做過不同的閱讀上SO和FB文檔如:

https://developers.facebook.com/docs/facebook-login/web https://developers.facebook.com/docs/facebook-login/multiple-providers https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#checktoken

How should a Facebook user access token be consumed on the server-side?

...雖然這只是將進一步混淆的東西。

我想我會採取存儲accesstoken然後檢查其有效性,但由於訪問令牌的各種實例過期和失效,這也似乎是一個不完整的解決方案。

所以我的問題:我如何安全地認證我的FB用戶與他們的對方用戶在我自己的數據庫?

+0

當用戶再次訪問您的網站時,您仍然需要執行FB登錄邏輯。否則,您的網站將不知道用戶已登錄到Facebook並授權您的應用。 – CBroe

+0

@Croro yeah ofc,但是當我下次訪問用戶時檢查登錄狀態,並且將'userid'和'accesstoken'傳遞給我的登錄進程時,'userid'是唯一可以檢查的字段,因爲'accesstoken'是不同的。這使得通過傳遞一個已知用戶標識符來劫持一個會話變得非常容易。那麼我錯過了什麼? :) – Horse

+0

使用訪問令牌爲'/ me'發出API請求,並使用您從那裏獲得的用戶標識。 – CBroe

回答

4

Facebook登錄請求返回用戶ID +短期訪問令牌(客戶端)。

使用服務器端Facebook SDK至check the validity of the access token(如果有效,將返回user_id和app_id字段)。

您可以信任從Facebook API返回的user_id字段,以檢查您現有的用戶數據庫。