Facebook Graph API无法正确验证appsecret_proof

时间:2015-03-04 14:14:17

标签: facebook facebook-graph-api

我有一个服务器应用程序,它从客户端接收用户访问令牌并生成appsecret_proof。我想进行图形API调用,以验证收到的访问令牌是否有效:

curl \
  -F 'access_token=<my access token>' \
  -F 'appsecret_proof=<my appsecret_proof>' \
  https://graph.facebook.com/me

但是,当我省略appsecret_proof字段时,仍然会验证请求。在这两种情况下,答案都是:

{"success":true}

如果我故意传递无效的appsecre_proof,它会按预期工作:

{"error":{"message":"Invalid appsecret_proof provided in the API argument","type":"GraphMethodException","code":100}}

我在高级设置中进行了必要的更改:

enter image description here

根据Facebook文档:&#34;启用此功能后,我们将仅允许包含appsecret_proof的API调用,或者从发出令牌的同一设备发出的API调用。&#34; &#34;一旦您更改了该设置,攻击者就无法在不访问您的应用秘密的情况下使用被盗访问权限。&#34;

我在这里缺少什么?

1 个答案:

答案 0 :(得分:3)

appsecret_proof APP SECRET KEY 不同。 基于FB文档,这是它需要获得的方式:

您可以将此生成的HMAC用作我的 appsecret_proof (例如): -

curl \
-F 'access_token=<my access token>' \
-F 'appsecret_proof=<my appsecret_proof>' \
-F 'batch=[{"method":"GET", "relative_url":"me"},{"method":"GET", "relative_url":"me/friends"}]'
https://graph.facebook.com/me

省略appsecret_proof字段可能有所帮助,但在某些地区,FB API要求它,这就是你需要提供它的方式