5

我们允许用户仅使用 facebook 访问令牌作为凭证来访问我们的后端(使用 REST api over https 和 json 回复),所以我们想做两件事:

  1. 验证访问令牌并找到用户的 id - 这只是对https://graph.facebook.com/me?access_token=TOKEN的调用

  2. 确保此访问令牌属于我们的 facebook 应用程序。您可以调用 https://graph.facebook.com/app?access_token=TOKEN,但这似乎是一个未记录的功能(而且有时相当慢)。

谁能告诉我这实际上是否是一种可能会留在那里的标准方法?或者是否有另一种方法来做我们想做的事情:验证用户的访问令牌是否有效并且来自我们的 facebook 应用程序。

你可以打电话给我/权限和我?字段=已安装,但这些似乎都没有告诉我我们正在检查哪个 facebook 应用程序。

4

3 回答 3

3

您应该按照文档(客户端或服务器端)中的描述实现身份验证流程。基本上,您可以通过使用您的应用程序对用户进行身份验证来获得一个新的访问令牌,并将该令牌用于对您的服务器的请求。通过这种方式,您可以确定令牌“属于”您的应用程序。要做的步骤:

  1. 使用您的应用 ID 初始化您选择的 Facebook SDK。
  2. 检查用户是否已经授权您的应用程序。
  3. 如果用户已经授权您的应用程序,您将获得他或她的 Facebook 用户 ID 以及令牌(“属于”您的应用程序),如果没有:验证用户并获取令牌。

文档为您提供示例代码和大量详细信息:

更新:

您提到的功能在此处记录(向下滚动到2. Make requests to API):

应用程序访问令牌允许您以应用程序而不是用户的身份发出请求。要检索应用程序的详细信息,请在以下位置执行 HTTP GET:
https ://graph.facebook.com/app?access_token=APP_ACCESS_TOKEN

因此,该功能可能会保留。

于 2012-08-14T19:00:32.463 回答
3

这是旧的,但我最近也有同样的担忧。我认为最直接的方法是使用debug_token.

GET graph.facebook.com/debug_token?
 input_token={token-to-inspect}
 &access_token={app-token-or-admin-token}

参考:https ://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#checktoken

于 2015-10-17T05:49:32.320 回答
2

您可以在每个请求中传递signed_request insted of access_token。参数 signed_request 基于您的应用程序的密钥,您可以简单地验证它。阅读有关签名请求的文档。

于 2012-08-14T16:24:40.077 回答