2010-11-04 54 views
9

Me gustaría poder usar el facebook android sdk y publicar un enlace a Facebook. Un ejemplo de lo que quiero sería si estuviera en Facebook y escriba un enlace en su parte de estado, como "http://www.google.com". Cuando haces esto, aparece un recuadro y tu publicación termina siendo un bloque que tiene una imagen y un enlace. Encontré documentación en la API de Facebook para esto utilizando un archivo adjunto, aunque cuando trato de hacer esto con la API de Facebook api no parece funcionar. He buscado durante horas en la red, sin suerte. Gracias.facebook facebook api publicar en la pared con la imagen

+0

¿Puedes publicar tu código actual? – Zarah

+0

Lo descubrí. –

+0

¿quizás podrías compartir tu solución? –

Respuesta

16

Asumiendo cuando leas esto que ya sabe cómo iniciar sesión en Facebook y como a través de la API ...

private void fbImageSubmit(Facebook fb, String imageurl, String caption, String description, String name, String linkurl) 
    { 
     if(fb != null) 
     { 
      if(fb.isSessionValid()) 
      { 
       Bundle b = new Bundle(); 
       b.putString("picture", imageurl); 
       b.putString("caption",caption); 
       b.putString("description",description); 
       b.putString("name",name); 
       b.putString("link",linkurl); 
       try { 
        String strRet = ""; 
        strRet = fb.request("/me/feed",b,"POST"); 
        JSONObject json; 
        try { 
         json = Util.parseJson(strRet); 
         if(!json.isNull("id")) 
         { 
          Log.i("Facebook", "Image link submitted."); 
         } 
         else 
         { 
          Log.e("Facebook","Error: " + strRet); 
         } 
        } catch (FacebookError e) { 
         Log.e("Facebook","Error: " + e.getMessage()); 
        } 
       } catch (Exception e) { 
        Log.e("Facebook", "Error: " + e.getMessage()); 
       } 
      } 
     } 
    } 
+1

+1 Gracias, me ayudó a saber el nombre de algunos parámetros que se pasarán en el paquete. –

+1

este método funciona completamente. Buen trabajo por @ Kelton –

+0

imageUrl y LinkUrl? ¿Qué son? –

3

Esto funciona bien perfecto con cuadro de diálogo Progreso .. Me lo han utilizado ...

debe añadido el tarro de Facebook ...

Facebook authenticatedFacebook = new Facebook(APP_ID); 

    private static final String[] PERMISSIONS = new String[] { "publish_stream", "read_stream", "offline_access" }; 

llamada a continuación en función de botón de clic ....

authenticatedFacebook.authorize(YOUR_CLASS_NAME.this, PERMISSIONS, new FaceBookWallPostListener()); 

Ahora Añadir esta clase ...

public class FaceBookWallPostListener implements DialogListener { 

    public void onComplete(Bundle values) { 
     new FacebookWallPost().execute(); 
    } 

    public void onCancel() { 
    } 

    public void onError(DialogError e) { 
     e.printStackTrace(); 
    } 

    public void onFacebookError(FacebookError e) { 
     e.printStackTrace(); 
    } 
} 

@Override 
protected boolean isRouteDisplayed() { 
    return false; 
} 





private class FacebookWallPost extends AsyncTask<String, Void, String> { 

    @Override 
    protected String doInBackground(String... params) { 
     try { 
      path = "Path OF YOUR IMAGE"; 
      Bundle parameters = new Bundle(); 
      parameters.putString("message", "MESSAGE YOU WANT TO POST"); 
      try { 
       File file = new File(path, "IMAGE_NAME.jpg"); 
       Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath()); 
       byte[] data = null; 
       ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
       bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
       data = baos.toByteArray(); 
       if (data != null) { 
        parameters.putByteArray("picture", data); 
       } 
       parameters.putString("access_token", authenticatedFacebook.getAccessToken()); 
       authenticatedFacebook.request("me"); 
       authenticatedFacebook.request("me/photos", parameters, "POST"); 
      } catch (Exception e) { 
       return e.getMessage(); 
      } 

      return "success"; 
     } catch (Exception e) { 
      return e.getMessage(); 
     } 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     pDialog.dismiss(); 
     if (result.equals("success")) { 
      Toast.makeText(YOUR_CLASS_NAME.this, "WallPost Successfully Done", Toast.LENGTH_SHORT).show(); 
      try { 
       new File(Environment.getExternalStorageDirectory().toString() + "/Diegodeals", "diegodeals.jpg").delete(); 
      } catch (Exception e) { 
      } 

     } else { 
      Toast.makeText(YOUR_CLASS_NAME.this, "Failed to post \n " + result, Toast.LENGTH_SHORT).show(); 
     } 

    } 

    @Override 
    protected void onPreExecute() { 
     pDialog = new ProgressDialog(YOUR_CLASS_NAME.this); 
     pDialog.setMessage("Posting Picture & Message on Facebook..."); 
     pDialog.show(); 
    } 

} 

///// SUERTE buena conexión.

Cuestiones relacionadas