Summary: Trying to post an image, and description on Facebook. If the image URL is null, I use a local drawable default image to upload to photos.
To upload the local image, I am using the following code:
My code:
Request.Callback uploadPhotoRequestCallback = new Request.Callback() {
@Override
public void onCompleted(Response response) {
if (response.getError() != null) {
//post error
} else{
String uploadResponse = (String) response.getGraphObject().getProperty("id");
if (uploadResponse is valid) {
parameters.putString("message", description);
} else {
//error
}
}
}
};
Request request = Request.newUploadPhotoRequest(Session.getActiveSession(), BitmapFactory.decodeResource(_context.getResources(), R.drawable.default_image), uploadPhotoRequestCallback);
request.setParameters(parameters);
Request.executeBatchAsync(request);
This executes with the following:
{HttpStatus: 400, errorCode: 324, errorType: OAuthException, errorMessage: (#324) Requires upload file}
Notes:
1. The image uploads successfully without
request.setParameters(parameters);
2. Tried parameters.putString("name", description);
instead of
parameters.putString("message", description);
Why is adding parameters causing an OAuthException?
When you create an newUploadPhotoRequest, that method will implicitly add some parameters to the Request object that's returned. When you call setParameter, you're replacing those implicit parameters with your own, which causes the request to be missing some required params.
What you should do instead is:
Request request = Request.newUploadPhotoRequest(Session.getActiveSession(), BitmapFactory.decodeResource(_context.getResources(), R.drawable.default_image), uploadPhotoRequestCallback);
Bundle parameters = request.getParameters(); // <-- THIS IS IMPORTANT
parameters.putString(...);
// add more params here
request.setParameters(parameters);
request.executeAsync();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With