¿Cómo subir videos a Facebook usando Facebook Android SDK 4.x?

Estoy intentando cambiar mi SDK de Facebook de 3.20 a 4.x. La subida de video se rompe con el nuevo SDK.

Aquí está el código que está trabajando en 3.20:

Request request = Request.newUploadVideoRequest(session, new File(videoPath), callback); Bundle params = request.getParameters(); params.putString("title", albumName); params.putString("description", " #SomeTag"); request.setParameters(params); request.executeAsync(); 

Estas son las diferentes cosas que he probado con el nuevo SDK 4.x. Pero cada vez que recibo el mismo error:

{FacebookServiceException: httpResponseCode: 500, facebookErrorCode: 6000, facebookErrorType: FacebookApiException, mensaje: Hubo un problema al subir el archivo de vídeo. Inténtalo de nuevo con otro archivo.}

1.

  AccessToken accessToken = AccessToken.getCurrentAccessToken(); GraphRequest request = GraphRequest.newPostRequest(accessToken, "me/videos", null, callback); Bundle params = request.getParameters(); params.putString("file_url", videoPath); params.putString("title", albumName); File videoFile = new File(videoPath); ParcelFileDescriptor descriptor = ParcelFileDescriptor.open(videoFile, ParcelFileDescriptor.MODE_READ_ONLY); params.putParcelable("source", descriptor); params.putString("description", " #SomeTag"); request.setParameters(params); request.executeAsync(); 

2.

  AccessToken accessToken = AccessToken.getCurrentAccessToken(); GraphRequest request = GraphRequest.newPostRequest(accessToken, "me/videos", null, callback); Bundle params = request.getParameters(); params.putString("file_url", videoPath); params.putString("title", albumName); byte[] byteVideo = getFileByteArray(videoPath); params.putByteArray("source", byteVideo); params.putString("description", " #SomeTag"); request.setParameters(params); request.executeAsync(); 

3.

  AccessToken accessToken = AccessToken.getCurrentAccessToken(); GraphRequest request = GraphRequest.newPostRequest(accessToken, "me/videos", null, callback); Bundle params = request.getParameters(); params.putString("file_url", videoPath); params.putString("title", albumName); params.putString("source", "{video-data}"); params.putString("description", " #SomeTag"); request.setParameters(params); request.executeAsync(); 

Agradecería cualquier ayuda. No he encontrado ninguna muestra de carga de vídeo de Facebook ni para el nuevo SDK.

2 Solutions collect form web for “¿Cómo subir videos a Facebook usando Facebook Android SDK 4.x?”

Después de pasar 1,5 días, finalmente tengo que trabajar. La idea básica es enviar el video como multipart / form-data, en este caso estoy usando un byteArray. Tengo esta idea de la respuesta dada por Bhavesh Hirpara en esta pregunta: ¿Está subiendo videos de una tarjeta SD a Facebook posible con el SDK de Facebook?

Hay un par de más advertencias, que se sienten más como bugs en Facebook SDK de Android, pero son:

  1. No incluya "source" o "file_url" en los parámetros de solicitud aunque la documentación de FB lo indique.
  2. Incluya los datos de vídeo en una cadena (por ejemplo, nombre de archivo de vídeo) en los parámetros de solicitud.

Aquí está el código de trabajo.

  AccessToken accessToken = AccessToken.getCurrentAccessToken(); GraphRequest request = GraphRequest.newPostRequest(accessToken, "me/videos", null, callback); Bundle params = request.getParameters(); try { byte[] data = readBytes(videoPath); params.putByteArray("video.mp4", data); params.putString("title", albumName); params.putString("description", " #SomeTag"); request.setParameters(params); request.executeAsync(); } catch (Exception e) { e.printStackTrace(); } public byte[] readBytes(String dataPath) throws IOException { InputStream inputStream = new FileInputStream(dataPath); ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = inputStream.read(buffer)) != -1) { byteBuffer.write(buffer, 0, len); } return byteBuffer.toByteArray(); } 

prueba esto. Uri videoFileUri = … ShareVideo = nuevo ShareVideo.Builder () .setLocalUrl (videoUrl) .build (); ShareVideoContent content = new ShareVideoContent.Builder () .setVideo (ShareVideo) .build ();

  • Android: nada coincide con el archivo de superposición - durante la construcción de hormigas
  • Informe de error de Android con un montón de <OR> en stacktrace
  • Android verificar el estado WIFI (desconectado o el usuario ha cambiado WIFI) ¿Cómo FLAG?
  • Utilizar interfaces para constantes de espacio de nombres en Android
  • pasar 2 valores de una a otra actividad
  • ¿Cómo desplazarse por la pantalla en la prueba de espresso android? Necesito validar el texto presente en la pantalla
  • Optimizaciones de Java: (Hotspot / Dalvik) Optimización del método final devolver una constante?
  • Portando el servidor java a Android
  • Cómo omitir o evitar la opción de "volver a tomar y revisar" después de capturar la foto de la cámara mediante ACTION_IMAGE_CAPTURE
  • Android - ¿qué es cola de mensajes encuesta nativa una vez en android?
  • ¿Cómo determinar el recuento de métodos de la aplicación?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.