2015-11-11 22 views

Odpowiedz

10

Czy próbujesz uzyskać listę przyjaciół Facebooka użytkownika zalogowanego w swojej aplikacji? Wygląda na to, że musisz wykonać żądanie z wykresu na Facebooku, aby zdobyć tę listę, a następnie wycofać wybranych znajomych.
https://developers.facebook.com/docs/graph-api/reference/user/friendlists/

Jeśli chcesz to zrobić w Android Java, jej przykład:

AccessToken token = AccessToken.getCurrentAccessToken(); 
     GraphRequest graphRequest = GraphRequest.newMeRequest(token, new GraphRequest.GraphJSONObjectCallback() { 
      @Override 
      public void onCompleted(JSONObject jsonObject, GraphResponse graphResponse) { 
       try { 
        JSONArray jsonArrayFriends = jsonObject.getJSONObject("friendlist").getJSONArray("data"); 
        JSONObject friendlistObject = jsonArrayFriends.getJSONObject(0); 
        String friendListID = friendlistObject.getString("id"); 
        myNewGraphReq(friendListID); 

       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    Bundle param = new Bundle(); 
    param.putString("fields", "friendlist", "members"); 
    graphRequest.setParameters(param); 
    graphRequest.executeAsync(); 

Ponieważ „członek” jest krawędzią w „listy znajomych” można zrobić nową prośbę wraz ze swoją friendlist Id aby uzyskać członków tej listy znajomych. https://developers.facebook.com/docs/graph-api/reference/friend-list/members/

private void myNewGraphReq(String friendlistId) { 
    final String graphPath = "/"+friendlistId+"/members/"; 
    AccessToken token = AccessToken.getCurrentAccessToken(); 
    GraphRequest request = new GraphRequest(token, graphPath, null, HttpMethod.GET, new GraphRequest.Callback() { 
     @Override 
     public void onCompleted(GraphResponse graphResponse) { 
      JSONObject object = graphResponse.getJSONObject(); 
      try { 
       JSONArray arrayOfUsersInFriendList= object.getJSONArray("data"); 
       /* Do something with the user list */ 
       /* ex: get first user in list, "name" */ 
       JSONObject user = arrayOfUsersInFriendList.getJSONObject(0); 
       String usersName = user.getString("name"); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    Bundle param = new Bundle(); 
    param.putString("fields", "name"); 
    request.setParameters(param); 
    request.executeAsync(); 
} 

W dokumentacji Facebook Graph życzenie można zobaczyć, co można zrobić z obiektami użytkownika. Nie mam wystarczającej liczby przedstawicieli, by niestety opublikować inny link.

Należy pamiętać, że użytkownik musiał zalogować się na Facebooku, aby uzyskać token dostępu potrzebny do wykonania tych operacji.

Cóż, mam nadzieję, że było to coś tak odległego jak to, czego szukałeś.

+0

Wow, wyjaśniłeś to naprawdę szczegółowo. Nie chcę, aby użytkownik miał relacje z Facebookiem. Chcę tylko umożliwić użytkownikowi, aby mógł zaimportować niektóre urodziny swoich znajomych z Facebooka. I umieściłem ikonę mojego facebook'a w MainActivity i kiedy kliknąłem, że pokazałbym nową aktywność, w tym działaniu wstawiłbym ten kod, prawda? –

+0

Właściwie, jeśli chcesz urodziny użytkownika z listy znajomych, musisz poprosić o dodatkowe pozwolenie z Facebooka. Spójrz na "user_birthday" ją: https://developers.facebook.com/docs/facebook-login/permissions/v2.5#reference-user_birthday Ale jeśli masz to pozwolenie, możesz zrobić to samo co powyżej, wystarczy przełączyć user.getString ("name"); z user.getString ("urodziny"); Ale powiedziałeś, że nie chcesz, aby użytkownik logował się na facebooku lub otrzymywał od niego token dostępu? Przyczyna: ten kod nie zadziałałby, ponieważ potrzebujesz tokenu dostępowego do zabawy z informacjami na Facebooku. – Slagathor

+0

Okay, nie ma problemu, jeśli użytkownik musi zalogować się na Facebooku. Cóż, bez tego użytkownik nie otrzyma listy swoich przyjaciół, więc jak mógłbym zrobić coś takiego. Kliknąłem na tę ikonę, a następnie otworzyłbym nową aktywność jako okno dialogowe i najpierw poprosiłbym o zalogowanie się na Facebooku, a następnie pokazałbym listę jego przyjaciół. Czy jest tam domyślnie lista z polami wyboru, aby sprawdzić, co chcę zaimportować? –

Powiązane problemy