0

I am trying to post the image on Facebook using Graph api. I have converted the image into byte array and tried to post it , But i failed. Its shows the text posted on wall but the Image is not posting. I don't know what is wrong.

I already checked the below available solutions of SO ,but none of them worked for me.

1) How to post image from drawable folder to facebook with graph api?

2)Unable to post an image from drawable to facebook

3)Post image with text on facebook from android

4)Android photo upload to facebook using graph api?

Here is the code which i am trying.

private void publishFeedDialog() {
        Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),
                R.drawable.ic_launcher);

        ByteArrayOutputStream stream = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
        byte[] bitMapData = stream.toByteArray();

        final Bundle params = new Bundle();
        params.putString("name", "Test FB Post.");
        params.putString("method", "photos.upload");
        params.putByteArray("picture", bitMapData);

       //Tried below code but not working.          
        /*try {
            String response = mFacebook.request("me/photos", params, "POST");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }*/
        WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(m_context,
                Session.getActiveSession(), params)).setOnCompleteListener(
                new OnCompleteListener() {

                    @Override
                    public void onComplete(Bundle values,
                            FacebookException error) {
                        if (error == null) {
                            // When the story is posted, echo the success
                            // and the post Id.
                            final String postId = values.getString("post_id");
                            if (postId != null) {
                                Toast.makeText(m_context,
                                        "Posted story, id: " + postId,
                                        Toast.LENGTH_SHORT).show();

                                finish();
                            } else {
                                // User clicked the Cancel button
                                Toast.makeText(m_context, "Publish cancelled",
                                        Toast.LENGTH_SHORT).show();
                            }
                        } else if (error instanceof FacebookOperationCanceledException) {
                            // User clicked the "x" button
                            Toast.makeText(m_context, "Publish cancelled",
                                    Toast.LENGTH_SHORT).show();
                        } else {
                            // Generic, ex: network error
                            Toast.makeText(getApplicationContext(),
                                    "Error posting story", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    }

                }).build();
        feedDialog.show();
    }

Please guide me. Any help will be appreciated.

Thanks

Community
  • 1
  • 1
GrIsHu
  • 29,068
  • 10
  • 64
  • 102

1 Answers1

0

Finally i resolved my problem to share image on Facebook using Simple Facebook SDK for Android which wraps original Facebook SDK 3.5

This sdk provides simple way to share image on facebook wall using the resources which refer the SimpleFacebook class.

You can publish (upload) photo to default album or to any other album you have. Photo can be created from:

  • Bitmap
  • File
  • byte[]
private SimpleFacebook mSimpleFacebook;
 mSimpleFacebook = SimpleFacebook.getInstance(this);
 Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
                    R.drawable.ic_launcher);
   // create Photo instace and add some properties
Photo photo = new Photo(bitmap);
photo.addDescription("Screenshot from sample application");
photo.addPlace("110619208966868");
// publish
mSimpleFacebook.publish(photo, new OnPublishListener()
{
    @Override
    public void onFail(String reason)
    {
    mProgress.hide();
    // insure that you are logged in before publishing
    Log.w(TAG, "Failed to publish");
    }
    @Override
    public void onException(Throwable throwable)
    {
           mProgress.hide();
        Log.e(TAG, "Bad thing happened", throwable);
    }
    @Override
    public void onThinking()
    {
     // show progress bar or something to the user while publishing
      mProgress = ProgressDialog.show(this, "Thinking",
    "Waiting for Facebook", true);
    }
    @Override
    public void onComplete(String id)
    {
        mProgress.hide();
        toast("Published successfully. The new image id = " + id);
    }
});
GrIsHu
  • 29,068
  • 10
  • 64
  • 102