首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API参数中提供的appsecret_proof无效

API参数中提供的appsecret_proof无效
EN

Stack Overflow用户
提问于 2013-11-10 15:06:43
回答 2查看 5.7K关注 0票数 2

我一直在尝试让appsecret_proof正常工作。

我已经在应用程序设置中启用了使用app_secret。

PHP sdk中生成app密钥的代码

代码语言:javascript
复制
$appsecret_proof= hash_hmac('sha256', APP_ID. "|" . APP_SECRET, APP_SECRET);

并且我在批处理请求中将其与post参数一起传递

代码语言:javascript
复制
$params['batch'] = json_encode($entries);
$params['appsecret_proof'] = $appsecret_proof;
$response = $facebook->api('/', "POST", $params);

我已经交叉检查了应用程序id和应用程序秘密。

使用这些设置时,我会得到以下错误。

API参数中提供的appsecret_proof无效

任何帮助都将不胜感激。

另外,在应用程序设置中禁用它可以使其正常工作。

EN

回答 2

Stack Overflow用户

发布于 2015-02-10 10:55:54

如果您在一个或多个子请求中使用用户访问令牌,则这些请求将需要自己的appsecret_proof。否则,Facebook会将用户的访问令牌与应用令牌的证明进行比较,检查将失败。

示例:

代码语言:javascript
复制
$proof1 = hash_hmac('sha256', [USER TOKEN 1], APP_SECRET);
$proof2 = hash_hmac('sha256', [USER TOKEN 2], APP_SECRET);


$requests = array(
   array(
       'relative_url' => "[USER ID 1]/permissions",
       'method' => "GET",
       'body' => "access_token=[USER TOKEN 1]&appsecret_proof=" . $proof1
   ),
   array(
       'relative_url' => "[USER ID 2]/permissions",
       'method' => "GET",
       'body' => "access_token=[USER TOKEN 2]&appsecret_proof=" . $proof2
   ),
);


$appToken = APP_ID. "|" . APP_SECRET;
$appsecret_proof= hash_hmac('sha256', appToken, APP_SECRET);
$params['batch'] = json_encode($requests);
$params['appsecret_proof'] = $appsecret_proof;
$response = $facebook->api('/', "POST", $params);
票数 4
EN

Stack Overflow用户

发布于 2014-01-29 18:43:10

根据facebook的文档,正确的语法是:

代码语言:javascript
复制
$appsecret_proof= hash_hmac('sha256', $access_token, $app_secret);

请看这里:

https://developers.facebook.com/docs/graph-api/securing-requests/

帮我解决了这个问题...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19887186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档