通过图像数据上传facebook照片

通过图像数据上传facebook照片,facebook,actionscript-3,facebook-graph-api,Facebook,Actionscript 3,Facebook Graph Api,我使用的是graph api v2.1。AS3代码生成数据,通过外部接口调用JS代码,JS代码调用FBAPI 我可以通过{image url}上传照片,但尝试通过{image data}上传照片时出错: {消息:(#324)需要上传文件”,键入:“OAutheException”,代码: 324} 我猜,我把{图像数据}格式化错了。这是我的密码: AS3: JS: UPD: 以下是图片的初始化方式: [Embed(source="../res/logo_2.png", mimeType="ima

我使用的是graph api v2.1。AS3代码生成数据,通过外部接口调用JS代码,JS代码调用FBAPI

我可以通过{image url}上传照片,但尝试通过{image data}上传照片时出错:

{消息:(#324)需要上传文件”,键入:“OAutheException”,代码: 324}

我猜,我把{图像数据}格式化错了。这是我的密码:

AS3:

JS:

UPD:

以下是
图片
的初始化方式:

[Embed(source="../res/logo_2.png", mimeType="image/png")]
private var testImage:Class;

<...>

var data:Bitmap = new testImage() as Bitmap;
var picture:ByteArray = PNGEncoder.encode(data.bitmapData);
[Embed(source=“../res/logo_2.png”,mimeType=“image/png”)]
私有var testImage:类;
var data:Bitmap=newtestimage()作为位图;
变量图片:ByteArray=PNGEncoder.encode(data.bitmapData);
你试过base64吗

var params: Object = new Object;
var encoder:JPGEncoder = new JPGEncoder(75);
var bytes:ByteArray = encoder.encode(bmp.bitmapData);
params.message = message;
params.image = bytes;
params.fileName = "image.jpg";
Facebook.api("/me/photos",null,params,"POST");

尝试以下代码来准备数据:

        var pngData:ByteArray = PNGEncoder.encode(image.bitmapData);
        var strForStart:String = "\r\n--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"photo\"; filename=\"file1.png\"\r\n" + "Content-Type: image/png\r\n\r\n" + "";
        var strForEnd:String = "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"Upload\"\r\n\r\n" + "Submit Query\r\n" + "--" + boundary + "--";

        var beginBA:ByteArray = new ByteArray();
        beginBA.writeMultiByte(strForStart, "ascii");
        var endBA:ByteArray  = new ByteArray();
        endBA.writeMultiByte(strForEnd, "ascii");

        var resultBytes:ByteArray = new ByteArray();
        resultBytes.writeBytes(beginBA, 0, beginBA.length);
        resultBytes.writeBytes(pngData, 0, pngData.length);
        resultBytes.writeBytes(endBA, 0, endBA.length);

tnx的回应。需要使用JS SDK上传图像。我尝试将位图编码为JPG而不是PNG,但这无助于.Tnx的响应。我试过这个密码,但没用。我将准备好的数据登录到brouser控制台。有一刻我不明白:
length:7217;职位:7217;字节可用:0
。为什么是0?我尝试设置
resultBytes.position=0,但仍然收到相同的错误。。。。还有一件事:
可共享:false
。但是将其设置为
true
不会改变任何事情我在回答中又增加了一个提示,也许会有所帮助。我看到了这一点,也做了同样的事情。不是吗?
var params: Object = new Object;
var encoder:JPGEncoder = new JPGEncoder(75);
var bytes:ByteArray = encoder.encode(bmp.bitmapData);
params.message = message;
params.image = bytes;
params.fileName = "image.jpg";
Facebook.api("/me/photos",null,params,"POST");
        var pngData:ByteArray = PNGEncoder.encode(image.bitmapData);
        var strForStart:String = "\r\n--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"photo\"; filename=\"file1.png\"\r\n" + "Content-Type: image/png\r\n\r\n" + "";
        var strForEnd:String = "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"Upload\"\r\n\r\n" + "Submit Query\r\n" + "--" + boundary + "--";

        var beginBA:ByteArray = new ByteArray();
        beginBA.writeMultiByte(strForStart, "ascii");
        var endBA:ByteArray  = new ByteArray();
        endBA.writeMultiByte(strForEnd, "ascii");

        var resultBytes:ByteArray = new ByteArray();
        resultBytes.writeBytes(beginBA, 0, beginBA.length);
        resultBytes.writeBytes(pngData, 0, pngData.length);
        resultBytes.writeBytes(endBA, 0, endBA.length);