Come caricare i video su Facebook utilizzando Android SDK 4.x?

Sto provando a cambiare il mio SDK di Facebook da 3.20 a 4.x. Il caricamento video viene interrotto con il nuovo SDK.

Ecco il codice che sta lavorando in 3.20:

  • Progetto di aggiornamento di Android Studio: Unisci contro Rebase vs Branch Default
  • Problemi di caricamento di mobile.twitter in webview
  • Il plugin Jenkins di Emulator Android non funziona
  • La piattaforma Phonegap aggiunge android
  • Evidenziare la visualizzazione di text utilizzando EditText
  • La GUI per il gestore di SDK Android è andata?
  • 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(); 

    Ecco le diverse cose che ho provato con il nuovo SDK 4.x. Ma each volta che ottengo lo stesso errore:

    {FacebookServiceException: httpResponseCode: 500, facebookErrorCode: 6000, facebookErrorType: FacebookApiException, messaggio: C'era un problema di caricamento del file video. Riprova con un altro file.}

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

    Apprezzo qualsiasi aiuto. Non ho trovato alcun esempio di caricamento video da Facebook per il nuovo SDK.

  • Come offuscare una libreria di Android (file .jar) utilizzando Proguard in Eclipse
  • il field di text html in WebView in un'applicazione Android è nascosto dalla tastiera soft
  • lanciare attività da pacchetto diverso
  • Sovrascrivi lo stato di Android-L CardView per le vecchie versioni di Android
  • Come avviare un'attività o un servizio prima che un'applicazione di applicazione venga disinstallata dall'utente?
  • Android: corretto modo di saltare tra i frammenti
  • 2 Solutions collect form web for “Come caricare i video su Facebook utilizzando Android SDK 4.x?”

    Dopo aver trascorso 1,5 giorni, ho finalmente funzionato. L'idea di base è quella di submit il video come multipart / form-data, in questo caso sto utilizzando un byteArray. Ho avuto questa idea dalla risposta fornita da Bhavesh Hirpara su questa domanda: è ansible caricare video da una SD Card a Facebook con l'SDK di Facebook?

    Ci sono ancora due avvertimenti, che si sentono più simili a bug in Facebook Android SDK, ma sono:

    1. Non includere "source" o "file_url" nei parametri di richiesta, anche se la documentazione FB dice così.
    2. Includere i dati video nei confronti di alcuni String (ad esempio il nome del file video) nei parametri di richiesta.

    Ecco il codice di lavoro.

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

    prova questo. Uri videoFileUri = … ShareVideo = nuovo ShareVideo.Builder () .setLocalUrl (videoUrl) .build (); Content ShareVideoContent = nuovo ShareVideoContent.Builder () .setVideo (ShareVideo) .build ();

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.