Android的照片后向Facebook墙 [英] Android post picture to Facebook wall
问题描述
我想发布图片到我的墙在Facebook上。我已设法在登录和张贴文本到墙上。然而,当我尝试张贴照片,什么都不会发生。
我使用的是的Android 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屋!