通过Javascript/Phonegap上传base64图像到Facebook Graph API

11
我正在尝试向https://graph.facebook.com/"+userID+"/photos?access_token="+accessToken发送“post”请求,其中'url'参数是一个base64数据URI。
我收到了错误消息:“data:base64....是内部URL,但这是外部请求”。

我也一直在寻找这个。我能想到的最接近的方法是先将图像临时保存在服务器上,然后将图像提供给一个相册,最后删除照片,因为一旦图像上传到 Facebook 上,源图像就不再需要了。不过期待看看其他人能找到什么方法。 - Justin McCraw
这个对我有用:http://facebook.stackoverflow.com/a/16439233/1472477 - Justin McCraw
2个回答

0

我深知无法上传单张照片的痛苦。经过数日的不眠和大量的研究后,我终于通过 cordova 文件传输插件使其正常工作。

这种解决方案并不需要Uint8Array或Blob支持;)

首先添加插件:cordova plugin add org.apache.cordova.file-transfer

然后使用以下代码(注意我正在使用angular.js。要么不使用承诺,要么使用像rsvp或Q这样的库来实现您的承诺):

function postImage(fileURI, message) {

    var deferred = $q.defer();

    var win = function (r) {

        deferred.resolve(r);
    }

    var fail = function (error) {

        deferred.reject(error);
    }

    var options = new FileUploadOptions();
    options.fileKey = "file";
    options.fileName = 'name_of_photo_' + Math.round((+(new Date()) + Math.random()));
    options.mimeType = "image/jpg";

    var params = new Object();
    params.access_token = "your facebook access token ;)";
    params.message = message;
    params.no_story = false;

    options.params = params;

    var ft = new FileTransfer();
    ft.upload(fileURI, "https://graph.facebook.com/v2.0/me/photos", win, fail, options);

    return deferred.promise;
}

-1
  <script src='http://connect.facebook.net/en_US/all.js'></script>
 FB.init({appId: "ur ap id of fb", status: true, cookie: true});
FB.login(function(response) {
       if (response.authResponse) {
         var access_token =   FB.getAuthResponse()['accessToken'];
         FB.api('me/photos', 'post', {
             message: 'posted by xxxx',
             status: 'success',
             access_token: access_token,
             url: 'test.png'
         }, function (response) {

             if (!response || response.error) {
                alert('Error occured');
             } else {
                 alert('Image Posted On Facebook');
             }

         });
       } else {

       }
     }, {scope: 'user_photos,photo_upload,publish_stream,offline_access'});

        },
        error:function(){

        }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接