javascript - Graph API 将 base64 IMAGE 发布到 Facebook

标签 javascript php facebook facebook-graph-api

尝试将一些数据发布到我的墙上,但出现错误

我主要引用这篇文章:Upload Base64 Image Facebook Graph API

但我陷入困境并不断收到来自 FB 的 400 错误响应。
就此而言,我检查了我的调用,发现我的数据对象为空(我假设这就是导致 400 错误的原因)。

这是我所拥有的:

function publishStream(img)
        {
            var accessToken = "";

            FB.getLoginStatus(function(response) 
            {
              if (response.status === 'connected') 
              {
                var uid = response.authResponse.userID;
                accessToken = response.authResponse.accessToken;
              } 
              else if (response.status === 'not_authorized') {
                // the user is logged in to Facebook, 
                // but has not authenticated your app
              } 
              else {
                // the user isn't logged in to Facebook.
              }
            });

            var imageData  = img;
            try{
                blob = dataURItoBlob(imageData);
            }
            catch(e){
                console.log(e);
            }

            var fd = new FormData();
            fd.append("access_token",accessToken);
            fd.append("source", blob);
            fd.append("message","");

            try{
                $.ajax({
                    url:"https://graph.facebook.com/me/photos?access_token=" + accessToken,
                    type:"POST",
                    data:fd,
                    processData:false,
                    contentType:false,
                    cache:false,
                    success:function(data){
                        console.log("success " + data);
                    },
                    error:function(shr,status,data){
                        console.log("error " + data + " Status " + shr.status);
                    },
                    complete:function(){
                    console.log("Posted to facebook");
                    }
                });

            }
            catch(e){
                console.log(e);
            }
        }

        function dataURItoBlob(dataURI) {
            var byteString = window.atob(dataURI);

            var ia = new Uint8Array(byteString.length);
            for (var i = 0; i < byteString.length; i++) {
                ia[i] = byteString.charCodeAt(i);
            }
            var blob = new Blob([ia], { type: 'image/png' });

            return blob;
        }

其中参数img是base64编码的图像。

这是我从错误请求中得到的数据:

{ "data": [   ] }

谁能引导我到达终点线???如有任何帮助,我们将不胜感激!

最佳答案

您阅读过 FB 上 https://developers.facebook.com/docs/graph-api/reference/user/photos/#publish 下的文档吗?

显然,sourceblob 需要用转义大括号封装:

source=%7Bimage-data%7D

如果你尝试会发生什么

fd.append("source", '%7B' + blob + '%7D');

另外,关于 Upload Base64 Image Facebook Graph API 答案的评论之一它被声明为“当您发送它进行 blob 转换时删除“data:image/png;base64,”部分”。你尝试过这个吗?

关于javascript - Graph API 将 base64 IMAGE 发布到 Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611932/

相关文章:

javascript - 无法从本地主机 :8000 更新 simperium 用户

php - 使用 tcpdf 和 PHP 的 PDF 字体中缺少井号 (£)

javascript - 我如何告诉 Reddit 忽略我的缩略图 Logo ?

javascript - 检查页面加载时的 Facebook 登录状态

javascript - 在javascript php中隐藏可见的div并显示另一个div?

javascript - 如何创建一个列表,使每个选项都是 AngularJS 中的一个列表?

javascript - 使用 RaphaelJS 将路径缩放到纸张大小或以像素为单位设置路径尺寸

php - Laravel 5.4 OAuth 与 Dingo 内部请求

PHP 没有从 MySQL 查询返回正确的信息

html - 社交媒体上的链接跟随按钮不起作用