Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从android fb sdk向facebook墙发布消息总是错误_Android_Facebook_Facebook Wall - Fatal编程技术网

从android fb sdk向facebook墙发布消息总是错误

从android fb sdk向facebook墙发布消息总是错误,android,facebook,facebook-wall,Android,Facebook,Facebook Wall,我对Android的fb sdk有问题(从下载)。试图张贴墙,但始终出错(权限已设置并登录到fb) 下面是代码片段onClick函数,我对它们的示例代码做了一些小修改: Bundle params = new Bundle(); params.putString("message", "Test"); params.putString("name", "American Virgin"); params.putString("link", "http://bit.ly/12345"); par

我对Android的fb sdk有问题(从下载)。试图张贴墙,但始终出错(权限已设置并登录到fb)

下面是代码片段onClick函数,我对它们的示例代码做了一些小修改:

Bundle params = new Bundle();

params.putString("message", "Test");
params.putString("name", "American Virgin");
params.putString("link", "http://bit.ly/12345");
params.putString("description", "A Freshman College Girl on a scholarship from an ...");
params.putString("picture", "http://xxx/MOV1026.jpg");

mAsyncRunner.request("me/feed", params, "POST", new TestRequestListener());
从DDMS中,我得到以下错误:

    09-16 18:55:28.372: WARN/Bundle(14392): Key picture expected byte[] but value was a java.lang.String.  The default value <null> was returned.
09-16 18:55:28.414: WARN/Bundle(14392): Attempt to cast generated internal exception:
09-16 18:55:28.414: WARN/Bundle(14392): java.lang.ClassCastException: java.lang.String
09-16 18:55:28.414: WARN/Bundle(14392):     at android.os.Bundle.getByteArray(Bundle.java:1220)
09-16 18:55:28.414: WARN/Bundle(14392):     at com.facebook.android.Util.openUrl(Util.java:153)
09-16 18:55:28.414: WARN/Bundle(14392):     at com.facebook.android.Facebook.request(Facebook.java:295)
09-16 18:55:28.414: WARN/Bundle(14392):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:209)
09-16 18:55:28.422: WARN/Bundle(14392): Key message expected byte[] but value was a java.lang.String.  The default value <null> was returned.
09-16 18:55:28.432: WARN/Bundle(14392): Attempt to cast generated internal exception:
09-16 18:55:28.432: WARN/Bundle(14392): java.lang.ClassCastException: java.lang.String
09-16 18:55:28.432: WARN/Bundle(14392):     at android.os.Bundle.getByteArray(Bundle.java:1220)
09-16 18:55:28.432: WARN/Bundle(14392):     at com.facebook.android.Util.openUrl(Util.java:153)
09-16 18:55:28.432: WARN/Bundle(14392):     at com.facebook.android.Facebook.request(Facebook.java:295)
09-16 18:55:28.432: WARN/Bundle(14392):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:209)
09-16 18:55:28.452: WARN/Bundle(14392): Key format expected byte[] but value was a java.lang.String.  The default value <null> was returned.
09-16 18:55:28.472: WARN/Bundle(14392): Attempt to cast generated internal exception:
09-16 18:55:28.472: WARN/Bundle(14392): java.lang.ClassCastException: java.lang.String
09-16 18:55:28.472: WARN/Bundle(14392):     at android.os.Bundle.getByteArray(Bundle.java:1220)
09-16 18:55:28.472: WARN/Bundle(14392):     at com.facebook.android.Util.openUrl(Util.java:153)
09-16 18:55:28.472: WARN/Bundle(14392):     at com.facebook.android.Facebook.request(Facebook.java:295)
09-16 18:55:28.472: WARN/Bundle(14392):     at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:209)
09-16 18:55:28.372:WARN/Bundle(14392):关键图片应为字节[],但值为java.lang.String。返回了默认值。
09-16 18:55:28.414:警告/捆绑(14392):尝试强制转换生成的内部异常:
09-16 18:55:28.414:WARN/Bundle(14392):java.lang.ClassCastException:java.lang.String
09-16 18:55:28.414:WARN/Bundle(14392):位于android.os.Bundle.getByteArray(Bundle.java:1220)
09-16 18:55:28.414:WARN/Bundle(14392):位于com.facebook.android.Util.openUrl(Util.java:153)
09-16 18:55:28.414:WARN/Bundle(14392):位于com.facebook.android.facebook.request(facebook.java:295)
09-16 18:55:28.414:WARN/Bundle(14392):在com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:209)
09-16 18:55:28.422:WARN/Bundle(14392):关键消息应为字节[],但值为java.lang.String。返回了默认值。
09-16 18:55:28.432:警告/捆绑(14392):尝试强制转换生成的内部异常:
09-16 18:55:28.432:WARN/Bundle(14392):java.lang.ClassCastException:java.lang.String
09-16 18:55:28.432:WARN/Bundle(14392):位于android.os.Bundle.getByteArray(Bundle.java:1220)
09-16 18:55:28.432:WARN/Bundle(14392):位于com.facebook.android.Util.openUrl(Util.java:153)
09-16 18:55:28.432:WARN/Bundle(14392):位于com.facebook.android.facebook.request(facebook.java:295)
09-16 18:55:28.432:WARN/Bundle(14392):位于com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:209)
09-16 18:55:28.452:WARN/Bundle(14392):密钥格式应为byte[],但值为java.lang.String。返回了默认值。
09-16 18:55:28.472:警告/捆绑(14392):尝试强制转换生成的内部异常:
09-16 18:55:28.472:WARN/Bundle(14392):java.lang.ClassCastException:java.lang.String
09-16 18:55:28.472:WARN/Bundle(14392):位于android.os.Bundle.getByteArray(Bundle.java:1220)
09-16 18:55:28.472:WARN/Bundle(14392):位于com.facebook.android.Util.openUrl(Util.java:153)
09-16 18:55:28.472:WARN/Bundle(14392):位于com.facebook.android.facebook.request(facebook.java:295)
09-16 18:55:28.472:WARN/Bundle(14392):位于com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:209)

这真的很奇怪。。。我有一个应用程序,它使用相同的语法,但它的工作非常好。我只是查看了FB SDK的源代码,它似乎已经改变了很多…:

因此,您尝试这样做:

Bundle params = new Bundle();

params.putByteArray("message", "Test".getBytes());
params.putByteArray("name", "American Virgin".getBytes());
params.putByteArray("link", "http://bit.ly/12345".getBytes());
params.putByteArray("description", "A Freshman College Girl on a scholarship from an ...".getBytes());
params.putByteArray("picture", "http://xxx/MOV1026.jpg".getBytes());

mAsyncRunner.request("me/feed", params, "POST", new TestRequestListener());

我认为错误信息非常清楚<代码>“关键图片应为字节[],但值为java.lang.String。”

Bundle
params
中的键“picture”的值应该是字节数组,而不是字符串

编辑:没有读克里斯蒂安的答案。我很确定您应该传递实际的图像数据,而不是以字节为单位的文件名。但我可能错了

另一个编辑:是的,如果可以的话,我会投票否决我自己的答案,但我似乎连问题都没读清楚。错误不仅仅发生在图片上,所以我不知道出了什么问题…

修复方法是:

if (parameters.get(key) instanceof byte[]) {
而不是

if (parameters.getByteArray(key) != null) {
在Util.java的第63行

而不是

if (params.getByteArray(key) != null) {
在Util.java的第155行


出于某种奇怪的原因,在三星Nexus S(可能还有其他设备)上,它会返回一个字符串,而不是一个字节[]。

嗨,克里斯蒂安,谢谢你的回答。代码实际上是有效的,花了很长时间才出现在我的fb墙上,但警告消息仍然存在。你说得对,问题出在cast手术中。如果我输入'POST',参数必须在字节数组中,而不是在字符串中。尝试使用字节数组,但错误仍然出现,因为另一个参数(图形路径,令牌键仍为字符串)Hello Christian,我正在使用此代码,但我无法在facebook墙上发布图像。。。我得到了{“数据”:[]}作为回应,Kay没有问题,似乎问题出在sdk中。我将尝试手动编辑它..thanx为您的答案benvd…添加相同的问题,这些更改修复了它Hanks…当我对SDK进行这些更改时,我只发布了url和文本..非常感谢,我已经为此挣扎了半个小时,当我找到这篇文章时,我正准备深入研究源代码。奇怪的行为…一年后,这仍然是一个问题?世界跆拳道联盟!一年半。工作完美。
if (params.get(key) instanceof byte[]) {
if (params.getByteArray(key) != null) {