1

我正在尝试使用 Javascript SDK 在 Facebook 上上传照片。特别是我从我的 Actionscript3 应用程序生成一个 base64 编码的字节数组,我使用 ExternalInterface 将它传递给 Javascript 文件,然后我解码字节数组并尝试上传到 FB。但它给了我这个错误:

{"error":{"message":"(#324) Requires upload file","type":"OAuthException","code":324}}

我试图简单地从 url 上传图片,这样就顺利了!

这是我的 Javascript 代码:

    upPhoto:function(photo) {
       var img = F.decode_base64(photo);

       FB.api('/me/photos', 'post', {
        message:'test',
        fileName:'test',
        image: img
       }, function(response){

          if (!response || response.error) {
            log('Error!');
          } else {
            log('Upload OK!');
          }
       });  
    }

    decode_base64:function(s) {
       var e={},i,k,v=[],r='',w=String.fromCharCode;
       var n=[[65,91],[97,123],[48,58],[47,48],[43,44]];

       for(z in n){for(i=n[z][0];i<n[z][1];i++){v.push(w(i));}}
       for(i=0;i<64;i++){e[v[i]]=i;}

       for(i=0;i<s.length;i+=72){
          var b=0,c,x,l=0,o=s.substring(i,i+72);
          for(x=0;x<o.length;x++){
            c=e[o.charAt(x)];b=(b<<6)+c;l+=6;
            while(l>=8){r+=w((b>>>(l-=8))%256);}
          }
       }
      return r;
    }
4

3 回答 3

2

我不确定您从哪里获得该参数列表,但根据文档,没有fileNameimage,您应该使用必需的source

另一件事是您需要将其发布为multipart/form-data,而您不需要。

你检查过这个线程:Facebook Graph API - 使用 JavaScript 上传照片

于 2012-04-14T16:00:37.100 回答
2

在过去的三天里,我在这个话题上花了好几个小时。现在,我明白了,我有一个解决方案来修复你的代码(你已经接近解决方案了.. ^^):

这很简单:一旦您的用户使用“publish_stream”授权您的 fb 应用程序,我只需使用以下代码,它就会将图片上传到用户墙上 :-) 我希望它真的有帮助!

            <a href="#" onclick="uploadonwall(); return false;">Call the Publish Magic</a>
            <script>
            function uploadonwall(){
                FB.api('/me/photos', 'post',
                {
                    message: 'A new pic is on my wall ...',
                    url:'http://www.yourwebsite.com/big_image_about_to_be_published_on_facebook_user_wall.jpg'

                }, function(response) {
                    if (!response || response.error) {
                        alert('Oops! User Denied Access');
                    } else {
                        alert('Success: Content Published on Facebook Wall');
                    }
                });
            }
            </script>
于 2012-09-17T00:20:13.580 回答
1

我解决了使用 Facebook JS SDK 登录的问题,以及简单的 Actionscript 的 HTTP 函数在 Facebook 上发布图像。

这是AS3上传功能:

private function uploadOnFB(event:Event):void {

    var byteArray:ByteArray = PNGEncoder.encode(videobitmapData);

    var url:String = "https://graph.facebook.com/me/photos";

    var param:Object = new Object();
    param.message = "My uploaded photo!";
    param.access_token = access_token;

    var urlRequest:URLRequest = new URLRequest();
    urlRequest.url = url;
    urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
    urlRequest.method = URLRequestMethod.POST;
    urlRequest.data = UploadPostHelper.getPostData("photo.png", byteArray, param);

    var urlLoader:URLLoader = new URLLoader();
    urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
    urlLoader.load(urlRequest);
}

access_tokenonLoginSuccessFB Javascript SDK 回调返回。

于 2013-12-27T14:03:24.403 回答