我正在使用Facebook图形API,并且在处理失败的请求方面遇到了麻烦。
我使用此代码创建新帖子
SocialFacebook.createPosting = function(data) {
var options = {
params: {
access_token : data.tokens.accessToken,
message : data.text
}
};
var url = 'https://graph.facebook.com/' + data.graphId + '/feed';
var response = HTTP.call('POST', url, options).data;
return response;
}
但是,不是在响应中返回带有错误信息的JS对象,而是在失败的请求上抛出错误
Exception while invoking method 'createPosting' Error: failed [500] {"error":{"message":"Duplicate status message","type":"FacebookApiException","code":506,"error_subcode":1455006,"is_transient":false,"error_user_title":"Duplicate Status Update","error_user_msg":"This status update is identical to the last one you posted. Try posting something different, or delete your previous update."}}
因为它包含在Error
中,否则JSON对象现在是一个字符串,其中附加了一些其他内容,这使得难以解析和提取属性
任何关于它为什么抛出错误的想法,而不是通常返回带有错误详细信息的JS对象?
非常感谢
答案 0 :(得分:0)
According to the docs,关于HTTP.call()
:
在服务器上,此功能可以同步或异步运行。如果省略回调,它将同步运行,并在请求成功完成后返回结果。如果请求不成功,则会引发错误。
所以你有它:因为你同步调用HTTP.call()
(没有提供回调),如果它响应错误(在你的情况下,Code 500
),则抛出错误并且不包含在数据。