Android: obtener lista de amigos de facebook

Estoy usando el SDK de Facebook para publicar mensajes en las paredes.

Ahora necesito buscar la lista de amigos de Facebook. ¿Puede alguien ayudarme con esto?

– Editar –

try { Facebook mFacebook = new Facebook(Constants.FB_APP_ID); AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(mFacebook); Bundle bundle = new Bundle(); bundle.putString("fields", "birthday"); mFacebook.request("me/friends", bundle); } catch(Exception e){ Log.e(Constants.LOGTAG, " " + CLASSTAG + " Exception = "+e.getMessage()); } 

Cuando ejecuto mi activity , no veo nada, pero en LogCat hay un mensaje de depuración como:

 06-04 17:43:13.863: DEBUG/Facebook-Util(409): GET URL: https://graph.facebook.com/me/friends?format=json&fields=birthday 

Y cuando traté de acceder a esta url directamente desde el navegador, estoy recibiendo la siguiente respuesta de error:

 { error: { type: "OAuthException" message: "An active access token must be used to query information about the current user." } } 

Estás a mitad de camino. Has enviado la solicitud, pero no has definido nada para recibir la respuesta con tus resultados. Puede extender la clase BaseRequestListener e implementar su método onComplete para hacerlo. Algo como esto:

 public class FriendListRequestListener extends BaseRequestListener { public void onComplete(final String response) { _error = null; try { JSONObject json = Util.parseJson(response); final JSONArray friends = json.getJSONArray("data"); FacebookActivity.this.runOnUiThread(new Runnable() { public void run() { // Do stuff here with your friends array, // which is an array of JSONObjects. } }); } catch (JSONException e) { _error = "JSON Error in response"; } catch (FacebookError e) { _error = "Facebook Error: " + e.getMessage(); } if (_error != null) { FacebookActivity.this.runOnUiThread(new Runnable() { public void run() { Toast.makeText(getApplicationContext(), "Error occurred: " + _error, Toast.LENGTH_LONG).show(); } }); } } } 

A continuación, en su solicitud puede especificar el oyente de solicitud para utilizar para recibir la respuesta de la solicitud, como esto:

 mFacebook.request("me/friends", bundle, new FriendListRequestListener()); 

Uso de la consulta FQL

 String fqlQuery = "SELECT uid, name, pic_square FROM user WHERE uid IN " + "(SELECT uid2 FROM friend WHERE uid1 = me() LIMIT 25)"; Bundle params = new Bundle(); params.putString("q", fqlQuery); Session session = Session.getActiveSession(); Request request = new Request(session,"/fql", params,HttpMethod.GET, new Request.Callback(){ public void onCompleted(Response response) { Log.i(TAG, "Result: " + response.toString()); try{ GraphObject graphObject = response.getGraphObject(); JSONObject jsonObject = graphObject.getInnerJSONObject(); Log.d("data", jsonObject.toString(0)); JSONArray array = jsonObject.getJSONArray("data"); for(int i=0;i<array.length();i++) { JSONObject friend = array.getJSONObject(i); Log.d("uid",friend.getString("uid")); Log.d("name", friend.getString("name")); Log.d("pic_square",friend.getString("pic_square")); } }catch(JSONException e){ e.printStackTrace(); } } }); Request.executeBatchAsync(request); 

Yo estaba lidiando con eso y encontré la respuesta. El problema es que desea acceder a sus datos sin registro previo con su token de Facebook.

En primer lugar, debe definir su variable de Facebook:

 Facebook mFacebook = new Facebook(getString(R.string.fb_id)); 

Más adelante, defina su AsyncFacebookRunner:

 final AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(mFacebook); 

Ok, ahora debe autorizar su solicitud, con el método autorize. Tenga en cuenta que debe implementar métodos de devolución de llamada en DialogListener (), ponga atención en el método onComplete (). En ese método debe ejecutar la solicitud de búsqueda de amigos. Ahora su solicitud pasará porque ahora está autenticado. Ahora el código:

 mFacebook.authorize(this, fb_perms, new DialogListener(){ /** * Triggered on a successful Facebook registration. */ public void onComplete(Bundle values) { mAsyncRunner.request("me/friends", new FriendListRequestListener()); } /** * Triggered on a FacebookError. */ public void onFacebookError(FacebookError e) { } /** * Triggered on a DialogError. */ public void onError(DialogError e) { } /** * Triggered when the User cancels the Facebook Login. */ public void onCancel() { } }); 

Puede utilizar la clase FriendListRequestListener que se publicó por @Kon

Espero que esto ayude.

¡Aclamaciones!

Hola Por favor verifique debajo del enlace

API de Facebook para Android: ¿cómo obtener más información sobre los amigos del usuario?

Publicar en los amigos del usuario la pared de facebook a través de la aplicación Android

Me enfrenté al mismo problema ayer. Me pregunto si has sobrepasado la función onActivityResult() ?

 private Facebook mFacebook=null; ... ... ... @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { mFacebook.authorizeCallback(requestCode, resultCode, data); } 

Comprueba esta respuesta para saber cómo obtener la lista de amigos de Facebook y quién de estos amigos ha instalado tu aplicación usando el nuevo SDK de Facebook 3.0 para Android.

Estoy haciendo algo como esto está funcionando bien ….

  jsonObj = Util.parseJson(facebook.request("me/friends")); JSONArray jArray = jsonObj.getJSONArray("data"); for(int i=0;i<jArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); Log.v("THIS IS DATA", i+" : "+jArray.getJSONObject(i)); } 

Espero que sea útil …

Si alguien está leyendo esto a finales de 2015, la respuesta y el código es bastante simple. Eche un vistazo a la documentación oficial aquí (en la ventana de código haga clic en Android SDK). Tenga en cuenta que necesita tener permiso de user_friends.

Extremidad de Bro para los usuarios de android-rx – consiga a sus amigos síncrono, después procese el mensaje y la vuelta Observable:

 public Observable<List<Friend>> execute() { return Observable.defer(new Func0<Observable<List<Friend>>>() { @Override public Observable<List<Friend>> call() { AccessToken a = AccessToken.getCurrentAccessToken(); if (Utils.isValid(a)) { try { GraphResponse res = new GraphRequest(AccessToken.getCurrentAccessToken(), "me/friends").executeAndWait(); // process result return Observable.just(your friend list); } catch (Exception e) { // notify user or load again } } // invalid access token -> notify user } }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()); } 
  • Facebook Compartir imagen Url junto con el enlace en android
  • Diferencia entre onActivityResult y onComplete de Session.StatusCallback Facebook Android sdk3.0
  • ¿Cómo comprobar en el diálogo de compartir con facebook apiv2.2?
  • Cómo deshabilitar el inicio de sesión único de Facebook para Android - Facebook-android-sdk
  • Texto de recorte de Facebook en Android cuando se usa una intención de ACTION_SEND
  • Estilo FacebookActivity para evitar la barra de progreso terrible
  • Cómo obtener el ID de usuario de FB mediante el botón de inicio de sesión de Facebook en la aplicación de Android
  • Cómo utilizar el parámetro de paquete de paso para la paginación en el desarrollo de facebook android
  • Cómo aprender qué versión de la aplicación instalada mediante programación en android
  • Facebook 3.0 Android segundo intento de inicio de sesión devuelve "Estado de sesión cerrado"
  • Java.lang.NoClassDefFoundError: com.facebook.android.R $ error de diseño al usar facebook jar sdk
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.