2013-06-28 3 views
2


Je suis en train de publier une photo dans mon mur en utilisant facebook sdk 3.0 pour android. Voici le code:Publier la photo sur le mur avec facebook sdk

GraphObject graphObject = GraphObject.Factory.create(); 

    Bitmap bmp = BitmapFactory.decodeFile(loadFinalImageSavedFullPath()); 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
    byte[] byteArray = stream.toByteArray(); 

    graphObject.setProperty("source", Base64.encodeToString(byteArray, Base64.DEFAULT); 
    graphObject.setProperty("message", "sup"); 

    com.facebook.Request.executePostRequestAsync(fSession, "me/photos", graphObject, new Callback() {...} 

mais je suis toujours à obtenir cette erreur:

I/facebook(10707): {Response: responseCode: 400, graphObject: null, error: {HttpStatus: 400, errorCode: 324, errorType: OAuthException, errorMessage: (#324) Requires upload file}, isFromCache:false}



J'ai essayé de POST sans API facebook:

@Override 
     protected Boolean doInBackground(String... params) { 
      Bitmap bmp = BitmapFactory.decodeFile(loadFinalImageSavedFullPath()); 

      ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
      byte[] byteArray = stream.toByteArray(); 

      List<NameValuePair> pm = new ArrayList<NameValuePair>(); 
      pm.add(new BasicNameValuePair("access_token", params[0])); 
      pm.add(new BasicNameValuePair("message","sup")); 
      pm.add(new BasicNameValuePair("source", Base64.encodeToString(byteArray, Base64.DEFAULT))); 

      String res = postJSONString(https://graph.facebook.com/me/photos, pm); 
      Log.i(TAG, res); 
      if (res == null || res.contains("error")) { 
       return false; 
      } 
      return true; 
     } 

Même problème ...

I/facebook(2977): {"error":{"message":"(#324) Requires upload file","type":"OAuthException","code":324}}


On dirait que c'est la seule façon dont je gère cela fonctionne:

com.facebook.Request.executeUploadPhotoRequestAsync(fSession, bmp, new Callback() { 

Inconvénient, ne peut pas ajouter un commentaire dans le POST ...

Que pourrait-il être?
Merci pour votre temps.

Répondre

5

Enfin obtenu au travail !!!

com.facebook.Request request = com.facebook.Request.newUploadPhotoRequest(Session.getActiveSession(), bmp, new Request.Callback() {...}); 

Bundle params = request.getParameters(); 
params.putString("name", "sup"); 
request.setParameters(params); 

Request.executeBatchAsync(request); 

espérons qu'il vous aidera aussi;)

Questions connexes