Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Facebook Open Graph Api身份验证错误,即使post成功_Javascript_Ajax_Facebook_Api_Graph - Fatal编程技术网

Javascript Facebook Open Graph Api身份验证错误,即使post成功

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

我正在创建一个应用程序来管理Facebook上的帖子。 我可以毫无错误地发布一条基本的Facebook消息,并在我的页面相册中上传本地图像

问题在于后者。在上传我的图片并使用它的ID为我的图片帖子捕获源代码后,该消息已成功发布,但出现身份验证错误

我使用Ajax来实现这一点,并注意到(查看我的代码),我的控制台按以下顺序打印:
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令牌