【发布时间】:2015-02-06 11:57:30
【问题描述】:
我正在使用 Facebook 的 Javascript SDK,但它返回错误:
来自服务器的 API 调用需要 appsecret_proof 参数
我很熟悉为什么它会通过 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 的错误,还是我在某处遗漏了什么?
【问题讨论】:
-
有一个关于这个的错误报告:developers.facebook.com/bugs/1379698435674774
-
这解释了很多,谢谢@Tobi
标签: javascript facebook facebook-graph-api facebook-javascript-sdk