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签名 –