2012-04-17 29 views
6

Tôi đang sử dụng Facebook Android SDK. Có cách nào dễ dàng để có được bạn bè của người dùng đã tải xuống ứng dụng không? Ví dụ, ứng dụng Draw Something thực hiện điều này. Tôi dường như không thể tìm thấy bất kỳ thông tin về chủ đề nàyđược Facebook bạn bè Android đã có ứng dụng được tải về

Tôi đoán rằng nếu đó là có thể, một số thông tin thêm sẽ là cần thiết trong httppost để truy cập thông tin này.

+0

hey , tôi cũng muốn danh sách bạn bè trong một listview. tôi đã sử dụng yêu cầu phương pháp bạn bè facebook như trong phần đầu tiên của JPMagalhaes trả lời dưới đây. Nhưng tôi không biết làm thế nào để habdle kết quả. Tôi có nghĩa là làm thế nào để có được kết quả trong một listview. những gì tôi phải làm với người dùng Danh sách . u có thể trả lời ở đây: http: // stackoverflow.com/questions/26773639/working-with-facebook-sdk –

Trả lời

54

* Lưu ý: kể từ phiên bản 3.14, tôi/bạn bè sẽ chỉ trả lại bạn bè cũng sử dụng ứng dụng, vì vậy việc triển khai dưới đây không còn được dùng nữa. Xem API "Bạn bè có thể mời" hoặc "Bạn bè có thể gắn thẻ" cho các lựa chọn thay thế.

Sử dụng SDK Facebook mới cho Android (3.0) rất dễ dàng để có được danh sách bạn bè của người dùng của bạn. Tiếp theo là các mã:

private void requestFacebookFriends(Session session) { 
    Request.executeMyFriendsRequestAsync(session, 
      new Request.GraphUserListCallback() { 
       @Override 
       public void onCompleted(List<GraphUser> users, 
         Response response) { 
        // TODO: your code for friends here! 
       } 
      }); 
} 

Tuy nhiên, để có được bạn bè của người dùng đang sử dụng ứng dụng Facebook của bạn là một chút phức tạp (do tài liệu Facebook API). Nhưng có, có thể.

Trước hết, tạo yêu cầu của bạn:

private Request createRequest(Session session) { 
    Request request = Request.newGraphPathRequest(session, "me/friends", null); 

    Set<String> fields = new HashSet<String>(); 
    String[] requiredFields = new String[] { "id", "name", "picture", 
      "installed" }; 
    fields.addAll(Arrays.asList(requiredFields)); 

    Bundle parameters = request.getParameters(); 
    parameters.putString("fields", TextUtils.join(",", fields)); 
    request.setParameters(parameters); 

    return request; 
} 

Lưu ý rằng bạn cần phải chèn lĩnh vực "cài đặt" trong yêu cầu của bạn. Tôi đang yêu cầu đường dẫn hình ảnh của người dùng có cùng yêu cầu. Kiểm tra khả năng của bạn here.

Tiếp theo, bạn có thể sử dụng trên mã để tạo yêu cầu của bạn và sau đó nhận được bạn bè:

private void requestMyAppFacebookFriends(Session session) { 
    Request friendsRequest = createRequest(session); 
    friendsRequest.setCallback(new Request.Callback() { 

     @Override 
     public void onCompleted(Response response) { 
      List<GraphUser> friends = getResults(response); 
      // TODO: your code here 
     } 
    }); 
    friendsRequest.executeAsync(); 
} 

Lưu ý rằng việc sử dụng yêu cầu chung này, bạn không nhận được một danh sách GraphUser như phản ứng. Bạn sẽ cần mã sau đây để có được câu trả lời như GraphUser danh sách:

private List<GraphUser> getResults(Response response) { 
    GraphMultiResult multiResult = response 
      .getGraphObjectAs(GraphMultiResult.class); 
    GraphObjectList<GraphObject> data = multiResult.getData(); 
    return data.castToListOf(GraphUser.class); 
} 

Bây giờ bạn có thể sử dụng danh sách bạn bè của người dùng, với các thông tin nếu mỗi người trong số bạn bè của bạn sử dụng ứng dụng Facebook của bạn:

GraphUser user = friends.get(0); 
boolean installed = false; 
if(user.getProperty("installed") != null) 
    installed = (Boolean) user.getProperty("installed"); 
+7

+1 cho đầy đủ và chính xác. Đây là câu trả lời hay nhất –

+2

+1 cho đầy đủ và chính xác, tôi không thể nói nó tốt hơn @BlakeMiller. – VansFannel

+0

Thuộc tính "được cài đặt" hoạt động như thế nào? Điều đó có bao gồm những người dùng đã cấp quyền đọc cho ứng dụng không? –

1

Tôi hy vọng bài viết này sẽ giúp bạn: How can i get my friends using my facebook App with graph api asp.net

Theo Facebook SDK, lĩnh vực has_added_app bị phản đối và bạn nên sử dụng is_app_user

+0

Cảm ơn bạn đã thêm thông tin, vậy không có cách nào để gọi điện tới api biểu đồ facebook để có được người dùng đang sử dụng ứng dụng? –

+0

Như tôi thấy bạn có thể thực hiện truy vấn FQL để thu thập thông tin này: SELECT uid FROM user WHERE is_app_user = 1 và uid IN (SELECT uid2 FROM friend WHERE uid1 = {USERS'S FB ID}) –

2

tôi thực hiện nó theo cách này

Bundle params = new Bundle(); 

params.putString("fields", "name, picture, location, installed"); 

và trong thời gian hiển thị của các mục trong danh sách, trong phương pháp getView() i đã làm điều này

boolean b = jsonObject.getBoolean("installed"); 

if (b){ 
    Log.d("VIVEK",jsonObject.getString("name")); 
} 
Các vấn đề liên quan