Reputation: 453
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
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