Facebook JS API登录保证用户ID?

时间:2012-05-09 20:33:19

标签: facebook facebook-canvas

JS API的FB.login方法返回带有用户信息字典的响应,包括用户ID。这在JS api中存在于客户端。

如果要将其发送回运行facebok canvas应用程序的服务器,则服务器必须信任用户ID未被篡改。由于回复中没有签名的校验和,我看不出这是如何保证的。

我可以看到如何从POST签名请求中获取用户ID并将其存储在会话中,但这似乎不太正确。我确信有一种方法可以安全地做到这一点,而不是那种巴洛克式。

想法?

1 个答案:

答案 0 :(得分:1)

您应该使用Server-Side authentication作为服务器。

当用户加载您的应用程序并且尚未进行身份验证时,您将其发送到身份验证对话框,当他返回时,您获得一个代码,然后您与Facebook服务器交换以获取访问令牌,然后您可以查询图表api for“/ me”并获取用户数据,因为你从facebook服务器上获得它,你知道它没问题。

此外,当facebook POSTS到您的画布网址时,您会收到使用您的应用程序密码签名的签名请求,在您解码后,您可以根据您的密钥进行检查以验证其真实性。 此外,签名的请求具有用户ID,因此您也知道它也是安全的。

我建议同时使用服务器端身份验证和客户端身份验证,获得不同的令牌(服务器长达60天,客户端只需几个小时),您可以同时使用它们。