Autore Topic: Modificare sdk facebook  (Letto 607 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
Modificare sdk facebook
« il: 11 Luglio 2013, 17:02:47 CEST »
0
Salve!
Ho necessità di caricare un video su facebook, sfruttando proprio le facebook sdk
purtroppo ho l'errore
07-11 16:47:54.240: I/System.out(11378): {"error":{"message":"(#352) Sorry, the video file you selected is in a format that we don't support.","type":"OAuthException","code":352}}

A quanto leggo l'errore è molto comune, e si fixamodificando l'sdk di facebook.
Il problema è che non succede niente, quindi temo di modificarlo nel modo sbagliato.
Ecco quello che faccio:
Apro Desktop\facebook-android-sdk-3.0.1\facebook-android-sdk-3.0.1\facebook\src\com\facebook\android
e cerco il file util.java
lo apro con notepad ++ e lo modifico come indicato su SO

Codice (Java): [Seleziona]
public static String openUrl(String url, String method, Bundle params)
          throws MalformedURLException, IOException {
        // random string as boundary for multi-part http post
        String strBoundary = "3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f";
        String endLine = "\r\n";

        OutputStream os;



// ADDED By Shreyash For Publish Video
// sbmmahajan@gmail.com
// Mo. 919825056129
        // Try to get filename key
          String filename = params.getString("filename");
          // If found
           if (filename != null) {
              // Remove from params
                params.remove("filename");
           }
//===================================================


        if (method.equals("GET")) {
            url = url + "?" + encodeUrl(params);
        }
        Util.logd("Facebook-Util", method + " URL: " + url);
        HttpURLConnection conn =
            (HttpURLConnection) new URL(url).openConnection();
        conn.setRequestProperty("User-Agent", System.getProperties().
                getProperty("http.agent") + " FacebookAndroidSDK");
        if (!method.equals("GET")) {
            Bundle dataparams = new Bundle();
            for (String key : params.keySet()) {
                Object parameter = params.get(key);
                if (parameter instanceof byte[]) {
                    dataparams.putByteArray(key, (byte[])parameter);
                }
            }

            // use method override
            if (!params.containsKey("method")) {
                params.putString("method", method);
            }

            if (params.containsKey("access_token")) {
                String decoded_token =
                    URLDecoder.decode(params.getString("access_token"));
                params.putString("access_token", decoded_token);
            }

            conn.setRequestMethod("POST");
            conn.setRequestProperty(
                    "Content-Type",
                    "multipart/form-data;boundary="+strBoundary);
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setRequestProperty("Connection", "Keep-Alive");
            conn.connect();
            os = new BufferedOutputStream(conn.getOutputStream());

            os.write(("--" + strBoundary +endLine).getBytes());
            os.write((encodePostBody(params, strBoundary)).getBytes());
            os.write((endLine + "--" + strBoundary + endLine).getBytes());

            if (!dataparams.isEmpty()) {

                for (String key: dataparams.keySet()){
    // ADDED By Shreyash For Publish Video
// sbmmahajan@gmail.com
// Mo. 919825056129
// os.write(("Content-Disposition: form-data; filename=\"" + key + "\"" + endLine).getBytes());
                    os.write(("Content-Disposition: form-data; filename=\"" + ((filename) != null ? filename : key) + "\"" + endLine).getBytes());
                    os.write(("Content-Type: content/unknown" + endLine + endLine).getBytes());
                    os.write(dataparams.getByteArray(key));
                    os.write((endLine + "--" + strBoundary + endLine).getBytes());

                }
            }
            os.flush();
        }

        String response = "";
        try {
            response = read(conn.getInputStream());
        } catch (FileNotFoundException e) {
            // Error Stream contains JSON that we can parse to a FB error
            response = read(conn.getErrorStream());
        }
        return response;
    }

dopo di che, salvo tutto
faccio un bel clean del progetto
apro progetto/proprietà/android
cancello il riferimento alla libreria di facebook, e lo inserisco nuovamente.

Sbaglio qualcosa?

Post unito: 11 Luglio 2013, 17:18:00 CEST
-.-
Topic risolto
ho rifatto tutto per l'ennesima volta, tanto per esser sicuro di non aver sbagliato, e ora funziona (perlomeno con i .3gp ora provo con i .mp4)
Lascio il topic, magari può esser utile a qualcuno
« Ultima modifica: 11 Luglio 2013, 17:18:00 CEST da gabric, Reason: Merged DoublePost »