Facebook Javascript API调用返回需要appsecret_proff参数的错误,但这是客户端
Facebook Javascript API call returns error requiring appsecret_proof argument - but this is client side
我正在使用Facebook的Javascript SDK,但它返回错误:
来自服务器的API调用需要appsecret_proff参数
我很熟悉为什么它会通过PHP在服务器端返回这个错误,但这是客户端javascript,我不明白为什么它会返回这个错误。
剥离代码如下:
window.fbAsyncInit = function () {
FB.init({
appId: [my app id],
xfbml: true,
version: 'v2.2'
});
};
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
FB.login(function (res) {
if (res.authResponse) {
if (res.authResponse.grantedScopes.indexOf("manage_pages") >= 0) {
FB.api('/me/accounts', function (res) {
if (res && !res.error) {
/*
* Should show pages available for
* the facebook user to manage ...
* (code removed)
*/
}
else {
/*
* Instead, shows 'API calls from the
* server require an appsecret_proof
* argument" error here
*/
console.log("Error /me/accounts: " + JSON.stringify(res.error));
}
});
}
}
});
如果我在Facebook应用程序设置中关闭"服务器API调用的应用程序秘密证明",这很好,但出于安全原因,我希望启用此功能。
这不应该通过javascript调用失败-这是客户端API调用,而不是错误消息所描述的服务器API调用。
这是Facebook的一个bug,还是我在某个地方遗漏了什么?
截至2018年2月,该问题(或非常类似的问题)似乎再次出现。有一个错误报告:
https://developers.facebook.com/bugs/1597942793626594/
也就是说,对于启用了要求应用程序机密的应用程序,在编写时,似乎无法在不传递appsecret_proof
的情况下从Javascript执行API调用。
其他注意事项:
摘录自文件:
启用此功能后,我们将只允许API调用包括appsecret_proof或由颁发令牌的同一设备制成至.
但是,在应用程序设置>高级>安全>要求应用程序机密中,描述如下:
仅允许来自服务器的呼叫,并且需要应用程序机密或应用程序机密所有API调用的证明。
相关错误报告:2016年10月,2015年2月。
相关SO文章:来自服务器的API调用需要appsecret_proff参数。
相关文章:
- 模版启动错误-类型错误(“参数”url'必须是字符串,而不是“+类型的url”)
- Node.js错误:参数太多上传批量数据时出错
- 为什么我会得到这个错误:ng:areq错误参数
- AngularJS'ng:areq错误参数"{controller}不是函数“;,CodeIgnite
- 控制器错误:参数不是函数,未定义
- 错误:参数'ContactController'不是函数,未定义
- “类型错误:参数 1 的 ..不是 Firefox 中的有限浮点值”
- AngularJS错误:“参数'FirstCtrl'不是一个函数,未定义”
- “未捕获的语法错误:参数列表后缺少 )”
- Javascript 未捕获的语法错误:参数列表后缺少 )
- 错误:参数 4 的值无效.属性“方法”:意外属性
- 语法错误:参数列表后缺少 )
- 我一直收到这个角度js错误:参数“示例控制器”不是一个函数,未定义
- 角度:'错误:areq错误参数'由于缩小
- 错误:ng:areq错误参数:参数'registerController'不是函数,未定义
- 引用错误:参数未在 Ember.js 中定义
- Angular js-错误:ng:areq错误参数-
- 为什么我得到错误参数是未定义的
- WebGL Fragment Shader构造函数错误-参数太多
- 错误:ng:areq错误参数和参数没有在ANGULARJS中定义