我有一个iOS应用程序,我正在登录Facebook以请求access_token。
然后我将此访问令牌传递到我的服务器,我希望使用 appsecret_proof 获取'/ me'信息,但我注意到我可以没有appsecret_proof :
curl "https://graph.facebook.com/me?access_token=THE_ACCESS_TOKEN" {"id":"658267751","name":"Ricardo Otero", "first_name":"Ricardo","last_name":"Otero", "link":"https:\/\/www.facebook.com\/oterosantos", "hometown":{"id":"107911285910314","name":"Coimbra, Portugal"}, "location":{"id":"110432202311659","name":"Lisbon, Portugal"}...
虽然我已将“App Secret Proof for Server API调用”选项设置为true:
那么,请求不应该要求应用秘密吗?我不明白!
答案 0 :(得分:2)
每个access_token都依赖于应用和用户,因此对于不同的应用和用户组合,您将拥有不同的访问令牌,因此您无需担心。虽然我不知道你为什么这样做 http://m-farhan.com/2014/03/ios-facebook-sdk-tutorial/ 是这样做的正确方法。
答案 1 :(得分:0)
我也在浏览Facebook API“appsecret_proof”参数 - 这是Facebook开发者网站上的官方文档: https://developers.facebook.com/docs/graph-api/securing-requests#appsecret_proof - 看起来这个示例PHP调用可以帮助你:
$appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);
以下是他们显示的示例命令行调用:
curl \
-F 'access_token=<access_token>' \
-F 'appsecret_proof=<app secret proof>' \
-F 'batch=[{"method":"GET", "relative_url":"me"},{"method":"GET", "relative_url":"me/friends?limit=50"}]' \
https://graph.facebook.com
这是与Node.JS服务器进行类似调用的人(虽然不知道有没有特别的FACebook / API / SDK引用...: