我正在像这样从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];
        }];

        }
    }];


它给了我说到我以后获得的图像的三个链接。是否有可能找出其中哪一个实际上是用户选择作为主要资料图片的那个?

最佳答案

documentation中没有提到这样的字段可以告诉您它是否是个人资料图片。

但是您可以做的一件事-

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

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

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

(这是一种完全验证的方法,但是我不确定这是最好的方法)

10-08 06:24