如何使用Facebook Android SDK在页面墙上发布图片?

时间:2013-01-27 04:13:11

标签: android facebook post sdk image

我尝试了数千种方法,但都没有效果。每次帖子都不会出现。我之前设法发布了文字,但图片永远不会有用......

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

3 个答案:

答案 0 :(得分:1)

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

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

  

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

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

答案 1 :(得分:-1)

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

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

答案 2 :(得分:-1)

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