Subir fotos a Facebook: Añadir parámetros antes de ejecutar la llamada newUploadPhotoRequest da el error 'OAuthException'

Resumen: Tratando de publicar una imagen y una descripción en Facebook. Si la URL de la imagen es nula, utilizo una imagen predeterminada local para subir a las fotos.

Para cargar la imagen local, estoy utilizando el código siguiente:

Mi código:

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); 

Esto se ejecuta con lo siguiente:

 {HttpStatus: 400, errorCode: 324, errorType: OAuthException, errorMessage: (#324) Requires upload file} 

Notas:
1. La imagen se carga correctamente sin request.setParameters(parameters);
2. Probar parameters.putString("name", description); En lugar de parameters.putString("message", description);

¿Por qué se agregan parámetros que generan una OAuthException?

    One Solution collect form web for “Subir fotos a Facebook: Añadir parámetros antes de ejecutar la llamada newUploadPhotoRequest da el error 'OAuthException'”

    Al crear una nuevaUploadPhotoRequest, ese método añadirá implícitamente algunos parámetros al objeto Request devuelto. Cuando llama a setParameter, está reemplazando esos parámetros implícitos por los suyos, lo que hace que la solicitud falte algunos parámetros requeridos.

    Lo que debe hacer en su lugar es:

     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(); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.