Post image from android to facebook page

泄露秘密 提交于 2019-12-12 01:19:52

问题


I have successfully post a feed in facebook page form the graph api.

     try {
                   resObj.put("message","feed from android");
//resObj.put("object_attachment",bitmap);

                } catch (JSONException e) {
                    e.printStackTrace();
                }

                GraphRequest request = GraphRequest.newPostRequest(
                        AccessToken.getCurrentAccessToken(),"363453267193844/photos",resObj,
                        new GraphRequest.Callback() {
                            @Override
                            public void onCompleted(GraphResponse graphResponse) {
                                Log.i(TAG,"post page response::"+graphResponse);

                            }
                        }
                    );

                request.executeAsync();

But, I'm unable to post image into facebook page. The problem is I'm unable to find the key for image attachment in Json data posted in Graph Api.

The failed response from facebook is

{Response:  responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 324, errorType: OAuthException, errorMessage: (#324) Requires upload file}}

回答1:


Finally, finally, I was able to post an image into facebook page. This is how I did to post an photo.

  Bundle bundle=new Bundle();
        bundle.putByteArray("object_attachment",byteArray);// object attachment must be either byteArray or bitmap image
        bundle.putString("message","some message here");

        GraphRequest graphRequest=new GraphRequest(AccessToken.getCurrentAccessToken(),
                "{page_id}/photos",
                bundle,
                HttpMethod.POST,
                new GraphRequest.Callback() {

                    @Override
                    public void onCompleted(GraphResponse graphResponse) {

                      Log.i("post page response::" + graphResponse);

                }
        );
        graphRequest.executeAsync();



回答2:


1.) Make sure you a page access token with publish_pages permission that can be used to publish new photos.

2.) From the docs . Note that you dont have a "/" before pageid in your call.

There are two separate ways of publishing photos to Facebook:

1: Attach the photo as multipart/form-data. The name of the object doesn't matter, but historically people have used source as the parameter name for the photo. How this works depends on the SDK you happen to be using to do the post.

2: Use a photo that is already on the internet by publishing using the url parameter:

Bundle params = new Bundle();
params.putString("url", "{image-url}");
/* make the API call */
new Request(
    session,
    "/{page-id}/photos",
    params,
    HttpMethod.POST,
    new Request.Callback() {
        public void onCompleted(Response response) {
            /* handle the result */
        }
    }
).executeAsync();

There is no way to publish more then one photo in the same graph API call.

3.) Example ==>

Try it like this i.e post byteArrayStream of your photo

postParams = new Bundle();

            postParams.putString("message", "feed from android");
            postParams.putBoolean("published",true);
            String pageID = "363453267193844";

            //Post to the page as the page user
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            <YOURBITMAPPHOTOHANDLE>.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();
            postParams.putByteArray("source", byteArray);

            postParams.putString("access_token", "your_page_access_token");

         /* make the API call */
            new Request(
                    sessionInstance,
                    "/" + pageID + "/photos",
                    postParams,
                    HttpMethod.POST,
                    new Request.Callback() {
                        public void onCompleted(Response response) {
                            //An error occurred during posting to facebook
                            FacebookRequestError error = response.getError();
                            if (error != null) {
                                isPostingError = true;
                                postingErrorMessage = error.getErrorUserMessage();

                            } else {
                                isPostingError = false;
                            }

                        }


                    }
            ). executeAsync();


来源:https://stackoverflow.com/questions/29726024/post-image-from-android-to-facebook-page

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!