如何使用graph api v2.0获取Facebook用户的朋友和个人资料图片?

时间:2014-05-04 14:19:51

标签: ios facebook facebook-graph-api

Facebook最近将他们的图表api更新为v2.0(2014年4月30日)。现在获取Facebook好友和他们的个人资料照片的标准api电话是什么? (我/朋友不工作,因为我想要所有朋友而不是使用该应用程序的朋友)

3 个答案:

答案 0 :(得分:3)

在Graph API的v2.0中,/ me / friends仅包括已登录应用程序的用户的朋友。

要在标记和邀请的情况下使用朋友获取非应用,您可以使用新的/me/taggable_friends/me/invitable_friends端点。

此处有更多详情:Facebook Graph Api v2.0+ - /me/friends returns empty, or only friends who also use my app和此处:Get facebook friends with Graph API v.2.0

答案 1 :(得分:2)

每个人都迟到了,但这个信息不在那里。

以下是你如何获得taggable_friends Facebook个人资料照片(大片!)

 [FBRequestConnection startWithGraphPath:@"/me/taggable_friends?fields=id,name,picture.type(large)"
                             parameters:nil
                             HTTPMethod:@"GET"
                      completionHandler:^(
                                          FBRequestConnection *connection,
                                          id result,
                                          NSError *error
                                          ) {
                          NSArray* friends = [result objectForKey:@"data"];
                          NSLog(@"Found: %i friends", friends.count);
                         for (NSDictionary<FBGraphUser>* friend in friends) {



                             NSDictionary *pictureData = [[friend objectForKey:@"picture"] objectForKey:@"data"];

                             NSString *imageUrl = [pictureData objectForKey:@"url"];

                             NSLog(@"Facebook profile image url %@", imageUrl);



                          }




                      }];

这将检索所有Facebook好友,并解析每个朋友的imageURL。您可以解析“朋友”节点以获取可标记链接(仅当您从应用中标记朋友时才有效)及其用户名。

答案 2 :(得分:1)

    Next code will provide the taggable_friends with Url pictures at wanted sizes.

Session session = Session.getActiveSession();
    Bundle params = new Bundle();
    params.putString("fields", "picture.width(" + size.x + ").height(" + size.y + ")");
    Request request = new Request(session, "/me/taggable_friends", params, HttpMethod.GET, new Request.Callback() {
        public void onCompleted(Response response) {


        }
    });
    Request.executeBatchAsync(request);