Android的照片后向Facebook墙 [英] Android post picture to Facebook wall

查看:128
本文介绍了Android的照片后向Facebook墙的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想发布图片到我的墙在Facebook上。我已设法在登录和张贴文本到墙上。然而,当我尝试张贴照片,什么都不会发生。

我使用的是的Andr​​oid Facebook的SDK

下面是我到目前为止有:

 捆绑PARAMS =新包();
    params.putString(法,photos.upload);

    Toast.makeText(FacebookPoster.this,。+ getIntent()getExtras()getByteArray(数据)的长度,Toast.LENGTH_SHORT).show();

    params.putByteArray(图片报,getIntent()getExtras()getByteArray(数据));

    AsyncFacebookRunner mAsyncRunner =新AsyncFacebookRunner(脸谱);
    mAsyncRunner.request(NULL,则params,POST,新SampleUploadListener(),NULL);
 

敬酒显示8733,这意味着该字节数组不为空

NB。 logcat的输出一些警告(不是错误):

  03-02 14:19:29.554:WARN /包(1891年):尝试投产生的内部异常:
03-02 14:19:29.554:WARN /包(1891年):java.lang.ClassCastException:java.lang.String中
03-02 14:19:29.554:WARN /包(1891年):在android.os.Bundle.getByteArray(Bundle.java:1305)
03-02 14:19:29.554:WARN /包(1891年):在com.facebook.android.Util.openUrl(Util.java:155)
03-02 14:19:29.554:WARN /包(1891年):在com.facebook.android.Facebook.request(Facebook.java:559)
03-02 14:19:29.554:WARN /包(1891年):在com.facebook.android.AsyncFacebookRunner $ 2.运行(AsyncFacebookRunner.java:253)
03-02 14:19:29.584:WARN /包(1891年):主要方法预期的byte [],但价值是java.lang.String。默认值小于;空>被退回。
 

(显示下方对方几次。)

我究竟做错了什么?


解决的。 这是我做过什么,使其工作:

  facebook.authorize(这一点,新的String [] {publish_stream},
        新DialogListener(){

    @覆盖
    公共无效onFacebookError(FacebookError E){
    // TODO自动生成方法存根
    }

    @覆盖
    公共无效onerror的(DialogError dialogError){
    // TODO自动生成方法存根
    }

    @覆盖
    公共无效的onComplete(束值){
        postToWall(values​​.getString(Facebook.TOKEN));
    }

    @覆盖
    公共无效OnCancel的(){
    // TODO自动生成方法存根
    }
});
 

和辅助方法:

 私人无效postToWall(字符串accessToken){
    捆绑PARAMS =新包();

    params.putString(Facebook.TOKEN,accessToken);

    //字节数组是一个图片的数据。
    params.putByteArray(图片报,getIntent()getExtras()getByteArray(数据));

    尝试 {
        facebook.request(ME /照片,PARAMS,POST);

    }赶上(FileNotFoundException异常FileNotFoundException异常){
        makeToast(fileNotFoundException.getMessage());
    }赶上(MalformedURLException的MalformedURLException的){
        makeToast(malformedURLException.getMessage());
    }赶上(IOException异常IOException异常){
        makeToast(ioException.getMessage());
    }
}
 

解决方案

第一件事情是,你不使用图形API来上传图片...乌拉圭回合使用旧的REST API ...尝试用图形API,其简单...

使用下面的code:

 捆绑参数=新包();
param.putString(信息,照片标题);
param.putByteArray(图片报,ImageBytes);
mAsyncRunner.request(ME /照片,参数,POST,新SampleUploadListener());
 

根据错误信息,它看起来像在获得字节其捐赠的错误,从意向的包......

I am trying to post a picture to my wall on Facebook. I have managed logging in and posting text to the wall. However, when I try posting the picture, nothing happens.

I am using the Android Facebook SDK.

Here is what I have so far:

    Bundle params = new Bundle();
    params.putString("method", "photos.upload");

    Toast.makeText(FacebookPoster.this, "" + getIntent().getExtras().getByteArray("data").length, Toast.LENGTH_SHORT).show();

    params.putByteArray("picture", getIntent().getExtras().getByteArray("data"));

    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);
    mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);

The Toast shows 8733, which means the byte array isn't empty

NB. Logcat output some warnings (not errors):

03-02 14:19:29.554: WARN/Bundle(1891): Attempt to cast generated internal exception:
03-02 14:19:29.554: WARN/Bundle(1891): java.lang.ClassCastException: java.lang.String
03-02 14:19:29.554: WARN/Bundle(1891):     at android.os.Bundle.getByteArray(Bundle.java:1305)
03-02 14:19:29.554: WARN/Bundle(1891):     at com.facebook.android.Util.openUrl(Util.java:155)
03-02 14:19:29.554: WARN/Bundle(1891):     at com.facebook.android.Facebook.request(Facebook.java:559)
03-02 14:19:29.554: WARN/Bundle(1891):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:253)
03-02 14:19:29.584: WARN/Bundle(1891): Key method expected byte[] but value was a java.lang.String.  The default value <null> was returned.

(Shows several times underneath each other.)

What am I doing wrong?


SOLVED. This is what I did to make it work:

facebook.authorize(this, new String[] { "publish_stream" },
        new DialogListener() {

    @Override
    public void onFacebookError(FacebookError e) {
    // TODO Auto-generated method stub
    }

    @Override
    public void onError(DialogError dialogError) {
    // TODO Auto-generated method stub
    }

    @Override
    public void onComplete(Bundle values) {
        postToWall(values.getString(Facebook.TOKEN));                                              
    }

    @Override
    public void onCancel() {
    // TODO Auto-generated method stub
    }
});

And the helper method:

private void postToWall(String accessToken) {       
    Bundle params = new Bundle();

    params.putString(Facebook.TOKEN, accessToken);

    // The byte array is the data of a picture.
    params.putByteArray("picture", getIntent().getExtras().getByteArray("data"));

    try {
        facebook.request("me/photos", params, "POST");

    } catch (FileNotFoundException fileNotFoundException) {
        makeToast(fileNotFoundException.getMessage());
    } catch (MalformedURLException malformedURLException) {
        makeToast(malformedURLException.getMessage());
    } catch (IOException ioException) {
        makeToast(ioException.getMessage());
    }
}

解决方案

first thing is that you are not using graph api to upload the pictures... u r using the old rest api... try to use graph api, its simple...

Use following code:

Bundle param = new Bundle();
param.putString("message", "picture caption");
param.putByteArray("picture", ImageBytes);
mAsyncRunner.request("me/photos", param, "POST", new SampleUploadListener());

According to error message, it looks like its giving errors in getting bytes from intent's bundle...

这篇关于Android的照片后向Facebook墙的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆