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

  • Cómo enviar la dirección en la aplicación de Android a Google Maps
  • Eliminar todas las clases no utilizadas, métodos del proyecto de Android Studio
  • ¿Puede alguien dar una buena explicación de Dagger 2?
  • Cómo cambiar el separador decimal de DecimalFormat de coma a punto / punto?
  • Abstracción con Java en Android
  • ¿Convertir un solo byte en una cadena?
  • ¿Cómo puedo corregir el error JDK no encontrado al crear una fuente de Android?
  • Android - Cómo ejecutar la intención de JavaScript
  • GetContentView en Android
  • Universal-Image-Loader: mapas de bits erróneos se adjuntan a ImageView
  • ¿Cómo asigno un dibujable a ImageView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.