【问题标题】:How to post pictures on page walls using Facebook Android SDK?如何使用 Facebook Android SDK 在页面墙上发布图片?
【发布时间】:2013-01-27 04:13:11
【问题描述】:

我已经尝试了数千种方法,但都没有奏效。每次帖子都不会出现。我之前已经设法发布了文字,但图像永远无法正常工作......

     try {
            String response = facebook.request("me");
            Bundle parameters = new Bundle();

            String DIRECTORY_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/img/img.jpg";
            Bitmap bitmap = BitmapFactory.decodeFile(DIRECTORY_PATH);
            byte[] data = null;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            data = baos.toByteArray();
            parameters.putString("message", "picture caption");
            parameters.putByteArray("source", data); //I try "picture" too

            String pageid = "152390368241461";
            response = facebook.request(pageid + "/photos", parameters, 
                    "POST");
            Log.d("Tests", "got response: " + response);
            if (response == null || response.equals("") || 
                    response.equals("false")) {
               Log.v("Error", "Blank response");
           }
            showToast(getResources().getString(R.string.sucessharefc));
     } catch(Exception e) {
         e.printStackTrace();
     }

【问题讨论】:

  • 帮帮我:/我需要完成一项工作

标签: android facebook post sdk image


【解决方案1】:

根据Graph API Page docs,您需要使用具有publish_streammanage_pages 权限的令牌进行multipart/form-data POST。

Facebook Android SDK request() 文档说您正在使用的request() 形式:

请注意,此辅助函数尚不支持二进制数据参数(例如图片)。

因此,您必须为此使用 HTTP 客户端库。

【讨论】:

    【解决方案2】:

    您正在使用 Facebook SDK 中已弃用的 API。下载最新版本here,并查看入门指南和各种教程。

    要上传照片,您应该使用Request 类,尤其是Request.newUploadPhotoRequest 方法。

    【讨论】:

      【解决方案3】:
      Bitmap imaBitmap= BitmapFactory.decodeResource(this.getResources(),R.drawable.androidface);
      byte[] data = null;
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      imaBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
      data = baos.toByteArray();
      Bundle params = new Bundle();
      params.putString("message"," Facebook App Testing");
      params.putByteArray("picture", data);
      mAsyncRunner.request("1741449412743375/photos", params, "POST", new SampleUploadListener(), null);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多