我有一个服务器应用程序,它从客户端接收用户访问令牌并生成一个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}}
我在高级设置中做了必要的修改:
根据Facebook文档:“当启用该功能时,我们将只允许包含appsecret_proof或来自发出令牌的同一设备的API调用。”“一旦您更改了该设置,攻击者将无法在不访问您的应用程序机密的情况下使用窃取的访问令牌。”
我在这里错过了什么?
发布于 2015-10-04 10:45:58
appsecret_proof与应用程序的密钥不一样。根据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需要它,这就是您需要提供的方法。
https://stackoverflow.com/questions/28856675
复制相似问题