gpt4 book ai didi

facebook - 验证 Facebook 用户服务器端

转载 作者:太空宇宙 更新时间:2023-11-03 15:33:37 24 4
gpt4 key购买 nike

我正在编写一个 Facebook 应用程序,列出用户的 friend ,并与用户提供的有关他们的信息(存储在 Google App Engine 数据库中)进行交叉引用。以下是我的应用程序的运行方式:

用户登录 Facebook 后,通过 Facebook 的 Javascript SDK 调用 Graph API 以获取他们的好友列表。同时,AJAX 请求连同用户的 Facebook ID 一起发送到我的 Google App Engine 请求处理程序,处理程序发回一个 JSON 对象,其中包含来自数据库的有关用户 friend 的信息。然后在用户的计算机上交叉引用这两个列表。

这种方法的明显安全缺陷是,任何人都可以使用任意人的 Facebook ID 向我的处理程序发送请求,而无需以该人的身份登录 Facebook,并获取该人提供的有关其 friend 的所有信息.毕竟,Facebook ID 是公开的。

除了实现我自己的登录系统之外,我能想到的确保用户身份服务器端的唯一方法是在 AJAX 请求中包含用户的访问 token ,因为访问 token 证明用户已登录进入 Facebook 。然后请求处理程序可以向 Facebook Graph API 发出虚拟请求以验证它是否有效。但是,这似乎很老套,而且我不确定如何处理访问 token 在传输到 App Engine 服务器时过期的可能性。我还研究了 Facebook Python SDK ,虽然我不确定这可能有什么帮助。

App Engine 服务器如何验证 Facebook 用户是否已登录我的 Facebook 应用程序?

最佳答案

尝试使用 signed_request 而不是发送普通的 facebookID - 然后您可以使用 Facebook APP 页面上提供的 secret_id 在服务器上解码它们。然后没有人能够向您发送“假”查询,因为它们将无法在服务器端解密。

例如,我有一个允许用户对给定条目进行投票的应用程序。用户接受权限后,我使用 JavaScript 将他的投票发送到服务器:

$.ajax({
type: "POST",
url: base_url + 'vote/send',
data: { signed_request: response.authResponse.signedRequest, vote:vote },
});

在服务器端,我正在解码 signed_request 以获取用户 FacebookID 并将其存储为合法投票...这样,没有人能够向我发送假投票,因为 signed_request 以这种方式加密,这仅我的应用程序能够解码它。

response当然是object,它是在用户授权使用app后从SDK传来的。

关于facebook - 验证 Facebook 用户服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17518905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com