Как загрузить видео в Facebook с помощью Android Android SDK 4.x?

Я пытаюсь изменить свой SDK от 3.20 до 4.x. Загрузка видео нарушена с новым SDK.

Вот код, который работает в 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(); 

Вот разные вещи, которые я пробовал с новым SDK 4.x. Но каждый раз, когда я получаю ту же ошибку:

{FacebookServiceException: httpResponseCode: 500, facebookErrorCode: 6000, facebookErrorType: FacebookApiException, сообщение: возникла проблема с загрузкой видеофайла. Повторите попытку с другим файлом.}

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

Буду признателен за любую помощь. Я не нашел ни одного видео-загружаемого образца из Facebook для нового SDK.

Проведя 1,5 дня, я, наконец, работаю. Основная идея – отправить видео как multipart / form-data, в этом случае я использую byteArray. Я получил эту идею из ответа, данного Bhavesh Hirpara на этот вопрос: загружает ли видео с SD-карты на Facebook с помощью SDK для Facebook?

Есть еще несколько предостережений, которые больше похожи на ошибки в Android Android SDK, но они:

  1. Не включайте «источник» или «file_url» в параметры запроса, даже если в документации FB так говорится.
  2. Включите видеоданные против некоторой строки (например, имя видеофайла) в параметрах запроса.

Вот рабочий код.

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

попробуй это. Uri videoFileUri = … ShareVideo = новый ShareVideo.Builder () .setLocalUrl (videoUrl) .build (); ShareVideoContent content = новый ShareVideoContent.Builder () .setVideo (ShareVideo) .build ();

Intereting Posts
Несколько RecyclerView в одном фрагменте Android In-app billing v3 не возвращает правильную локализованную цену (getSkuDetails) Может ли Flow и Mortar загружать экран в фоновом режиме, если он медленно загружается (например, GoogleMap)? Android JellyBean не распознает getTextSize для AttriubteSet Как установить диалог для отображения в полноэкранном режиме? Совместное использование изображения с поставщиком контента в приложении для Android OnSaveInstanceState () и onRestoreInstanceState () Crashlytics Gradle Plugin – дополнительные свойства не изменяются Как сохранить журнал приложений Android в файл на физическом устройстве? Универсальный загрузчик изображений не работает Создание Deep Link для мобильного приложения Создание AlertDialog со статическими методами? Создайте девять патч-изображений с кодом Почему и когда нам нужно добавить android: префикс к стилю? MediaPlayer считает, что аудио-файл aac * является видео-файлом?