5

Web應用程序支持使用JavaScript SDK通過Facebook進行登錄。驗證服務器上的Facebook登錄

Facebook身份驗證發生在客戶端。一旦成功,FB.getLoginStatus()被調用並且認證令牌和用戶ID被髮送到服務器。

Web應用程序將Facebook用戶標識存儲在其數據庫中。

服務器如何知道用戶已成功登錄並且身份驗證令牌和用戶ID尚未僞造客戶端?有沒有一種方法可以在不向Facebook服務器發送請求的情況下進行此驗證服務器端?

+1

不,您將不得不打電話給FB的服務器來驗證訪問令牌。 – CBroe

+0

謝謝,自從我上次做這件事以來已經有一段時間了 - 我似乎記得有一件事可以通過共享密鑰和OAuth來檢查身份驗證令牌是否有效。 –

+0

https://developers.facebook.com/docs/facebook-login/access-tokens/#debug – CBroe

回答

1

根據我上面的評論,您可以通過將authResponse.signedRequest參數轉發到服務器並在服務器上對其進行解碼/檢查來完成此操作,而無需向服務器發送服務器端請求。

+0

我不明白 - 如果您驗證客戶端,服務器在接收到它時如何知道它是有效的? – markmnl

+0

這是前一陣子,所以可能是錯誤的,但從內存: - 通過發送請求到Facebook的服務器登錄發生在Facebook的服務器 - Facebook的服務器返回不能被瀏覽器加密的authResponse.signedRequest - 你可以將authResponse.signedRequest從瀏覽器轉發到您的服務器,您的服務器可以解密它以檢查它是否有效並且已經由Facebook簽名 –