2012-05-09 86 views
1

JS API的FB.login方法返回包含用户信息的用户信息字典的响应。这在JS api中存在客户端。Facebook JS API登录保证用户ID?

如果这将被发回到运行facebok画布应用程序的服务器,服务器必须相信用户ID没有被篡改。由于没有签名校验和,所以我不能看到如何保证。

我可以看到如何从POST签名的请求中获取用户标识并将其存储在会话中,但这看起来不太正确。我确定有一种方法可以安全地做到这一点,因为它不那么巴洛克式。

想法?

回答

1

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

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

此外,当facebook向您的画布网址发送POST请求时,您将获得使用您的应用密码签名的已签名请求,解码后可以使用您的密钥对其进行检查以验证其真实性。 此外,签名的请求还包含用户标识,因此您知道这也是安全的。

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

相关问题