【发布时间】:2013-07-08 03:47:55
【问题描述】:
我正在编写一个 Facebook 应用程序,该应用程序列出了用户的朋友,并与用户提供的有关他们的信息(存储在 Google App Engine 数据库中)进行交叉引用。以下是我的应用的运行方式:
用户登录 Facebook 后,通过 Facebook 的 Javascript SDK 调用 Graph API 以获取他们的好友列表。同时,将 AJAX 请求与用户的 Facebook ID 一起发送到我的 Google App Engine 请求处理程序,该处理程序将返回一个 JSON 对象,其中包含来自数据库的有关用户朋友的信息。然后在用户的计算机上交叉引用这两个列表。
这种方法的明显安全缺陷是,任何人都可以使用任意人的 Facebook ID 向我的处理程序发送请求,而无需以该人身份登录 Facebook,并获取该人提供的有关其朋友的所有信息.毕竟,Facebook ID 是公开的。
除了实现我自己的登录系统之外,我能想到的在服务器端确保用户身份的唯一方法是在 AJAX 请求中包含用户的访问令牌,因为访问令牌是用户已登录的证明进入脸书。然后,请求处理程序可以向 Facebook Graph API 发出一个虚拟请求,以验证它是否有效。但是,这似乎很棘手,我不确定如何处理访问令牌在传输到 App Engine 服务器时过期的可能性。我也查看了Facebook Python SDK,虽然我不确定这会如何帮助。
App Engine 服务器如何验证 Facebook 用户是否已登录到我的 Facebook 应用?
【问题讨论】:
标签: facebook google-app-engine authentication facebook-access-token facebook-authentication