Carlos
Carlos

Reputation: 453

Android - Error Posting Image on Facebook Wall with Facebook SDK 4.+

I want to post a message with an Image on Facebook Wall to one page I own. To do it I'm using the following code:

    private void postOnWall() {

    String PageAccessToken = "EAADpx4TvZCHcBAOw9fA2NaYLkwQUTx1ZCaRaxHN96HcXZCItbCCLiEVm8NmnMDZCJHDeZBR02WfEsVCciY27mtV2aXpZBWEsZC8wzyHZCSKcdQirIXyPuiLCIdCE2Y7oEcd9muMbbUvwWBH9iAzylJDG8VAljZARUG5zKZBeQpphuZCKcZCBecxf96WjwPPyZA5NeqzEZD";
    AccessToken accessToken = new AccessToken(PageAccessToken, AccessToken.getCurrentAccessToken().getApplicationId(), AccessToken.getCurrentAccessToken().getUserId(), AccessToken.getCurrentAccessToken().getPermissions(), null, AccessTokenSource.FACEBOOK_APPLICATION_NATIVE, AccessToken.getCurrentAccessToken().getExpires(), null);

    GraphRequest request = GraphRequest.newPostRequest(accessToken, "me/feed", null,
            new GraphRequest.Callback() {
                @Override
                public void onCompleted(GraphResponse response) {
                    Log.i("facebook","response "+ response);
                    FacebookRequestError error = response.getError();
                    if (error != null) {
                        Log.e("facebook","Error "+ error);

                    }
                }
            });

    byte[] data = null;
    Bitmap bi = mImageBitmap;
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bi.compress(Bitmap.CompressFormat.PNG, 100, baos);
    data = baos.toByteArray();

        String mMessage = "Message"; 

        Bundle postParams = request.getParameters();
        postParams.putByteArray("picture", data);
        postParams.putString("message", mMessage);
        postParams.putString("link", "https://play.google.com/store/apps/details?id=br.com.cfb.doar");
        request.setParameters(postParams);
        request.executeAsync();

}

I'm getting the following response from GraphRequest :

{Response:  responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 100, errorType: OAuthException, errorMessage: Invalid parameter}}

What I'm doing wrong?

Thank you in advance.

Upvotes: 0

Views: 209

Answers (1)

Carlos
Carlos

Reputation: 453

I found the solution. I changed the method to GraphRequest.newUploadPhotoRequest Bellow you can find the code. I hope it can help others.

    private void postOnWall() {

    String PageAccessToken = "EAADpx4TvZCHcBAG5KFqOZCojAYwBUma8vSAZBKGqPbZC8HlGr1z1Tgxsay45Gs1CVMVAn7NhrZC0T5i6rWS7ZCpICoVasUKCgCFhZCwgoDxng9szAZA7KbZAWdCVuUySEuGzTIRCTC80gzysj3gK2LNqf4ZCzZBUTWMegMYRmoZCS94ecmtVRZCEYyTU73hLdZCvDY8CEZD";
    AccessToken accessToken = new AccessToken(PageAccessToken, AccessToken.getCurrentAccessToken().getApplicationId(), AccessToken.getCurrentAccessToken().getUserId(), AccessToken.getCurrentAccessToken().getPermissions(), null, AccessTokenSource.FACEBOOK_APPLICATION_NATIVE, AccessToken.getCurrentAccessToken().getExpires(), null);

    GraphRequest request = GraphRequest.newUploadPhotoRequest(accessToken, "me/photos", mImageBitmap, null, null,
            new GraphRequest.Callback() {
                @Override
                public void onCompleted(GraphResponse response) {
                    Log.i("facebook", "response " + response);
                    FacebookRequestError error = response.getError();
                    if (error != null) {
                        Log.e("facebook", "Error " + error);
                    } else {
                        Toast.makeText(mContext,
                                "Photo uploaded successfully",
                                Toast.LENGTH_LONG).show();
                    }
                }

            });

        String mMessage = "Message Text";

        Bundle postParams = request.getParameters();
        postParams.putString("message", mMessage);
        request.setParameters(postParams);

        request.executeAsync();

Upvotes: 1

Related Questions