Javascript Facebook Open Graph Api身份验证错误,即使post成功
我正在创建一个应用程序来管理Facebook上的帖子。 我可以毫无错误地发布一条基本的Facebook消息,并在我的页面相册中上传本地图像 问题在于后者。在上传我的图片并使用它的ID为我的图片帖子捕获源代码后,该消息已成功发布,但出现身份验证错误 我使用Ajax来实现这一点,并注意到(查看我的代码),我的控制台按以下顺序打印:Javascript Facebook Open Graph Api身份验证错误,即使post成功,javascript,ajax,facebook,api,graph,Javascript,Ajax,Facebook,Api,Graph,我正在创建一个应用程序来管理Facebook上的帖子。 我可以毫无错误地发布一条基本的Facebook消息,并在我的页面相册中上传本地图像 问题在于后者。在上传我的图片并使用它的ID为我的图片帖子捕获源代码后,该消息已成功发布,但出现身份验证错误 我使用Ajax来实现这一点,并注意到(查看我的代码),我的控制台按以下顺序打印: 1.“成功01” 2.“完成” 3.“成功02” 而不是 1.“成功01” 2.“成功02” 3.“完成” 有人知道我做错了什么吗 $.ajax({ url: 'http
1.“成功01”
2.“完成”
3.“成功02”
而不是
1.“成功01”
2.“成功02”
3.“完成”
有人知道我做错了什么吗
$.ajax({
url: 'https://graph.facebook.com/me/photos?access_token=' + response.access_token,
type: 'POST',
data: data,
processData: false,
contentType: false,
cache: false,
success:function (data) {
FB.api( // BEGIN: IMAGE HAS BEEN UPLOADED, NOW LET'S GET THE IMAGE URL TO USE
'/'+ data.id,
'GET',
{"fields":"images"},
function(response) {
var getFirstImage = response.images[0].source;
console.log("succes 02");
FB.api( // BEGIN OF FB API TO POST BASIC MESSAGE
'/'+ val + '/feed',
'POST',
{message: message, link: link, source: getFirstImage, access_token: response.access_token},
function(response) {
console.log(response);
$("#" + val).addClass('postsucces');
$(".feedbackresponse").html("<span class='succesFeedback'>Alright! Every post was a succes</span>");
}); // END OF FB API TO POST BASIC MESSAGE
}); // END: IMAGE HAS BEEN UPLOADED, NOW LET'S GET THE IMAGE URL TO USE
$('.feedbackresponse').append('<p>Photo was successfully uploaded, object id is: ' + data.id + '</p>');
console.log("succes 01");
},
error:function (data) {
$('.feedbackresponse').append('<p>A problem occurred during upload</p>');
},
complete: function () {
console.log("complete");
}
});
$.ajax({
网址:'https://graph.facebook.com/me/photos?access_token='+response.access_令牌,
键入:“POST”,
数据:数据,
processData:false,
contentType:false,
cache:false,
成功:功能(数据){
api(//BEGIN:IMAGE已上载,现在让我们获取要使用的图像URL
“/”+data.id,
“得到”,
{“字段”:“图像”},
功能(响应){
var getFirstImage=response.images[0]。源;
控制台日志(“成功02”);
api(//发布基本消息的FB api的开始
“/”+val+“/feed”,
"岗位",,
{message:message,link:link,source:getFirstImage,access\u-token:response.access\u-token},
功能(响应){
控制台日志(响应);
$(“#”+val).addClass('postsucces');
$(“.feedbackresponse”).html(“好吧!每一篇文章都是成功的”);
});//发布基本消息的FB API结束
});//结束:图像已上载,现在让我们获取要使用的图像URL
$('.feedbackresponse').append('照片已成功上载,对象id为:'+data.id+'');
控制台日志(“成功01”);
},
错误:函数(数据){
$('.feedbackresponse').append('上传过程中出现问题');
},
完成:函数(){
控制台日志(“完成”);
}
});
})
FB.api
本身是异步的,因此外部AJAX调用的“完成”当然不会“等待”这些api调用完成。“但会给出身份验证错误”-何时、何地、什么错误?“console.log(response)”会给出身份验证错误。但这条消息仍被成功发布。错误:“(#200)需要发布#操作权限,或者管理#页面并以具有足够管理权限的管理员身份发布#页面”PS:我在内部API调用中确实具有权限,response.access\u token
甚至不应设置-response
此时是传递给第一个API调用的回调函数的变量,并且由于该API调用仅请求有关特定映像的详细信息,因此它不应包含任何access\u token
属性。因此,实际上,您很可能通过内部API调用在参数中传递了未定义的作为访问令牌…谢谢@CBroe!这确实是问题所在。我删除了response.access\u令牌