我正在从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];
}];
}
}];
它让我说三个链接到我后来获得的图像。是否有可能找出其中哪一个实际上是用户选择的主要图片?
答案 0 :(得分:1)
documentation中没有提及可以告诉您其个人资料图片的字段。
但有一件事你可以做 -
拨打电话 - /me/picture?redirect=0
。这将返回url
。 (example)
现在,在您的代码中,您只需检查此url
是否包含photoId
(子字符串),如果是,则为其个人资料图片。
或者,您可以事先从/me/picture?redirect=0
获取个人资料照片的照片ID,然后检查photoId
是否等于此 - 这是个人资料照片。 (取决于你想要实现的方式)
(这是一个完全证明的方法,但我不确定它是最好的方法)