如何找出哪个Facebook个人资料图片是主要的?

时间:2014-04-09 09:19:26

标签: ios objective-c facebook facebook-graph-api facebook-ios-sdk

我正在从Facebook获取用户个人资料图片,如下所示:

[FBRequestConnection startWithGraphPath:@"me/albums" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

        if (error)
            FRLogError(@"ERROR %@", error);
        else
        {
            NSDictionary *dataDictionary = [result objectForKey:@"data"];

            NSString *albumId = nil;

            for (NSDictionary *dictionary in dataDictionary)
            {
                if ([[dictionary objectForKey:@"name"] isEqualToString:@"Profile Pictures"])
                {
                    albumId = [dictionary objectForKey:@"id"];
                    break;
                }
            }

            [FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"%@/photos", albumId] completionHandler:^(FBRequestConnection *_connection, id _result, NSError *_error){

                NSArray             *photos     = [_result objectForKey:@"data"];
                NSMutableDictionary *photoLinks = [NSMutableDictionary dictionary];

                for (NSDictionary *dict in photos)
                {
                    NSString *photoId = dict[@"id"];
                    NSString *link    = dict[@"source"];
                    [photoLinks setObject:link forKey:photoId];
                }

                [[FRDataStorageManager sharedManager] saveImagesFromLinks:photoLinks];
        }];

        }
    }];

它让我说三个链接到我后来获得的图像。是否有可能找出其中哪一个实际上是用户选择的主要图片?

1 个答案:

答案 0 :(得分:1)

documentation中没有提及可以告诉您其个人资料图片的字段。

但有一件事你可以做 -

拨打电话 - /me/picture?redirect=0。这将返回url。 (example

现在,在您的代码中,您只需检查此url是否包含photoId(子字符串),如果是,则为其个人资料图片。

或者,您可以事先从/me/picture?redirect=0获取个人资料照片的照片ID,然后检查photoId是否等于此 - 这是个人资料照片。 (取决于你想要实现的方式)

(这是一个完全证明的方法,但我不确定它是最好的方法)