Unable to post an image from drawable to facebook

后端 未结 1 1926
别跟我提以往
别跟我提以往 2021-01-06 10:33

I am trying to pass an image from the drawables folder to the feed dialogue. But I am unable to view the image in facebook feed dialogue. Rest of the parameters are availabl

相关标签:
1条回答
  • 2021-01-06 11:07

    Publish feed will work only with url to image.

    See picture property under feed documentation: https://developers.facebook.com/docs/reference/dialogs/feed/

    If you want to publish image from your memory (like drawable folder) then you need to use: Request.newUploadPhotoRequest()

    Beside this, you can use this simple open source library that supports SDK 3.5 for doing actions like publish photo, feed and so on in a very simple way: https://github.com/sromku/android-simple-facebook

    UPDATE

    Option 1
    You can use Request.newUploadPhotoRequest(), but this method doesn't allow you to add any additional property except the image itself.

    Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.ic_launcher);
    Request.newUploadPhotoRequest(Session.getActiveSession(), bitmap , new Request.Callback()
    {
        @Override
        public void onCompleted(Response response)
        {
            // ... handle the response...           
        }
    });
    

    Option 2
    If you want to add additional properties to the image like description, then do almost the same but with raw graph api call. The facebook implementation of Request.newUploadPhotoRequest() does exactly the same but without setting additional properties.

    Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.ic_launcher);
    
    Bundle params = new Bundle();
    params.putParcelable("picture", bitmap);
    params.putString("message", "This is the description of the image");
    params.putString("place", "1235456498726"); // place id of the image
    
    Request request = new Request(session, "me/photos", bundle, HttpMethod.POST, new Request.Callback()
    {
        @Override    
        public void onCompleted(Response response)
        {
            // ... handle the response...
        }
    });
    
    RequestAsyncTask task = new RequestAsyncTask(request);
    task.execute();
    
    0 讨论(0)
提交回复
热议问题