当前位置: 首页 > 面试题库 >

Android将图片发布到Facebook墙上

戚甫
2023-03-14
问题内容

我正在尝试将图片张贴到Facebook的墙上。我已成功登录并在墙上张贴文字。但是,当我尝试发布图片时,没有任何反应。

我正在使用Android Facebook SDK。

这是我到目前为止的内容:

    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);

Toast显示8733,这意味着字节数组不为空

注意 Logcat输出一些警告(不是错误):

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.

(在彼此下方显示几次。)

我究竟做错了什么?

解决了。 这是我所做的,以使其正常工作:

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
    }
});

和辅助方法:

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());
    }
}

问题答案:

首先是您没有使用图形API上传图片…您使用的是旧的REST API …请尝试使用图形API,它非常简单…

使用以下代码:

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

根据错误消息,在从intent的包中获取字节时,它似乎给出了错误信息。



 类似资料:
  • 问题内容: 我正在尝试从我的应用程序中集成发布到墙上。我已经有一个用户可以在其中保存用户名和密码(已加密)的区域。我希望我的程序重新调用保存的用户名和密码,将其传递给Facebook进行身份验证,然后允许该应用将简单的文本(也可能是链接)发布到用户的墙上。 就是说,我已经阅读了Facebook开发人员页面上的所有内容(该API对我来说似乎完全陌生。我从未做过任何类型的Web应用程序开发……只是台式

  • 问题内容: 我正在尝试在Facebook页面的墙上张贴帖子。我可以使用App Access令牌在用户墙上发布信息。 通过扩展DefaultFacebookClient获得了应用程序访问令牌 有了这个,我可以使用appID和appSecret发布到用户墙。但是,当我尝试发布到Page Wall时,出现错误“用户未授权应用程序执行此操作” 有人可以建议吗? 问题答案: 应用程序访问令牌是最基本的令牌,

  • 问题内容: 我正在存储Facebook用户ID和访问令牌。我可以将此信息发布到所选用户的留言墙上吗?在这里可以找到以下代码:http : //developers.facebook.com/docs/reference/api/post/ 我只是不确定如何用php运行它。 问题答案:

  • 我正在尝试张贴到多个页面的提要。当我发布简单的文本,没有问题。然而,当我试图上传一张照片甚至一个链接时,该项目确实会被发布到feed,但它是发布到“其他人最近的帖子”部分,而不是页面feed本身。

  • 问题内容: 我正在构建一个php应用程序,该应用程序需要将用户上传的图片直接发布到Instagram,但是在快速搜索后,我发现API中没有这样的功能:(感觉很奇怪…因为他们应该提供一个。我我不确定是否有其他方法(适用于Android和iOS的应用除外)使用php上传图片。如果有可能,请给我提出任何想法。 谢谢 问题答案: 如果您阅读了共享的链接,则可接受的答案是: 您无法通过API将图片发布到In

  • Facebook Instant Games 跟微信小游戏相比,本质上的区别在于 Facebook Instant Games 运行于纯 HTML5 环境。因此它不仅可以在手机上,还可以在桌面浏览器上运行,开发和调试更加便捷。 目前 Cocos Creator 为用户完成的工作包括: 集成了 Facebook Instant Games SDK,并且自动进行了初始化,用户能直接调用相关的 API