Facebook Graph API和app secret

时间:2014-03-12 15:33:10

标签: ios facebook facebook-graph-api

我有一个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:

facebook settings

那么,请求不应该要求应用秘密吗?我不明白!

2 个答案:

答案 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引用...:

Get signed_request in Node.js (Express) Facebook canvas app