【问题标题】:Android: How to post the message with the image post on facebook?Android:如何在 facebook 上发布带有图片帖子的消息?
【发布时间】:2011-12-21 04:21:49
【问题描述】:

在我的应用程序中,我使用此代码在 Facebook 上发布照片。

代码:

 // For Facebook ===================================
            Button facebookButton = (Button) saveButtonDialog.findViewById(R.id.facebook);
            facebookButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    saveButtonDialog.dismiss();

                    saveImageFunction(); // to save the Image

                    facebook.authorize(TWSBIDrawMainActivity.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener() {                     
                        @Override                     
                        public void onComplete(Bundle values) {   
                            postImageonWall(); 
                            Toast.makeText(getApplicationContext(), "Image Posted on Facebook.", Toast.LENGTH_SHORT).show();

                        }                      
                        @Override                     
                        public void onFacebookError(FacebookError error) {                     
                        }                      
                        @Override                     
                        public void onError(DialogError e) {                     
                        }                      
                        @Override                     
                        public void onCancel() {                     
                        }                 
                    }); 
                }
            });



 public void postImageonWall() {             
    byte[] data = null;               

    Bitmap bi = BitmapFactory.decodeFile(APP_FILE_PATH + "/"+filename+".jpg");
    //Bitmap bi = BitmapFactory.decodeResource(getResources(), R.drawable.icon);             
    ByteArrayOutputStream baos = new ByteArrayOutputStream();              
    bi.compress(Bitmap.CompressFormat.JPEG, 100, baos);              
    data = baos.toByteArray();                
    Bundle params = new Bundle();              
    params.putString(Facebook.TOKEN, facebook.getAccessToken());              
    params.putString("method", "photos.upload");              
    params.putByteArray("picture", data);               
    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);              
    mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);    

现在我可以使用此代码发布照片了。 但现在我想用这张照片发布消息。那我还需要做什么呢?

请帮助我解决这个问题。 谢谢。

【问题讨论】:

标签: android facebook-graph-api android-layout facebook


【解决方案1】:

您只需向 Bunlde 对象参数添加一个额外的参数。这是我要做的,

Bundle params = new Bundle();              
params.putString(Facebook.TOKEN, facebook.getAccessToken());              
params.putString("method", "photos.upload");              
params.putByteArray("picture", data);     

params.putString("caption", facebook_comment);

AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook);              
mAsyncRunner.request(null, params, "POST", new SampleUploadListener(), null);

我认为你错过了这一行。

【讨论】:

  • 好的,谢谢您的回复。让我检查一下。
  • 大家好,有人能告诉我为什么在这一行“facebook.authorize(DrawingActivity.this, new String[]{ "user_photos,publish_checkins,publish_actions,publish_stream"},new DialogListener( ) {" 即使在导入 android facebook sdk 之后???
  • 我正在为我的应用程序使用上述代码。当我运行我的应用程序时,单击按钮在 Facebook 墙上发布消息时崩溃..
  • 我无法在墙上张贴图片....我收到 { "data": [ ] } 作为回应...请帮助
  • 这两年多了。我想这已经被弃用了。我建议您遵循其他地方的最新教程。很抱歉我帮不上忙。
【解决方案2】:
private String postwall(String uid)
    {
        String response = "";
        try
        {

            String DIRECTORY_PATH = "/sdcard/159.jpg";
            Bundle params = new Bundle();
            Bitmap bitmap = BitmapFactory.decodeFile(DIRECTORY_PATH);
            byte[] data = null;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
            data = baos.toByteArray();
            params.putString("app_id", uid);
            params.putString("message", "picture caption");
            params.putByteArray("picture", data);

            mFacebook.authorize(this, PERMISSIONS, new LoginDialogListener());
            mAsyncRunner.request("me/photos", params, "POST", new WallPostRequestListener());
            mAsyncRunner.request(response, new WallPostRequestListener());
            Log.e("post result", response);

        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return response;
    }

    public class WallPostRequestListener extends BaseRequestListener
    {

        public void onComplete(final String response)
        {
            Log.d("Facebook-Example", "Got response: " + response);
            String message = "<empty>";
            try
            {
                JSONObject json = Util.parseJson(response);
                message = json.getString("message");
            }
            catch (JSONException e)
            {
                Log.w("Facebook-Example", "JSON Error in response");
            }
            catch (FacebookError e)
            {
                Log.w("Facebook-Example", "Facebook Error: " + e.getMessage());
            }
            final String text = "Your Wall Post: " + message;

        }
    }

【讨论】:

  • 这是工作代码,我可以将我的照片和消息从我的 SD 卡发布到面书墙......
  • 谢谢。但我已经接受了答案。它有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-07
  • 1970-01-01
相关资源
最近更新 更多