Facebook:如何从用户的访问令牌获取app id - 使用/ app?access_token = TOKEN?

时间:2012-08-14 08:44:43

标签: facebook facebook-graph-api oauth-2.0

我们允许用户只使用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,但这似乎是一个没有记录的功能(有时候很慢)。

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

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

3 个答案:

答案 0 :(得分:3)

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

  1. 使用您的应用ID初始化您选择的Facebook SDK。
  2. 检查用户是否已经授权您的应用。
  3. 如果用户已经授权您的应用,您将获得他或她的Facebook用户ID以及令牌(“属于您的应用”),如果不是:验证用户并获取令牌。
  4. docs为您提供示例代码和大量详细信息:

    <强>更新

    您提到的功能已记录在案here(向下滚动到 2。向API发出请求):

      

    应用程序访问令牌允许您作为应用程序发出请求,而不是   一个用户。要检索应用程序的详细信息,请执行HTTP   GET on:
      https://graph.facebook.com/app?access_token=APP_ACCESS_TOKEN

    因此该功能可能会停留。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

这是旧的,但我最近也有同样的担忧。我认为最直接的方法是使用GET graph.facebook.com/debug_token? input_token={token-to-inspect} &access_token={app-token-or-admin-token} 检查访问令牌。

{{1}}

参考:here