使用3.0 SDK获取Facebook个人资料照片

时间:2012-08-29 03:43:30

标签: iphone ios facebook

我无法使用新的Facebook SDK获取用户的个人资料照片。这里的所有答案都使用旧SDK中不再有效的方法。

我尝试过使用Facebook教程中推荐的FBProfilePictureView,但是这张图片没有被缓存,我认为它不能转换成UIImage。

有人可以提供一些帮助吗?谢谢!

5 个答案:

答案 0 :(得分:14)

好的,我终于使用以下内容得到了这个:

imageData = [[NSMutableData alloc] init]; // the image will be loaded in here
NSString *urlString = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture?type=large", user.id];
NSMutableURLRequest *urlRequest =
[NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]
                                     cachePolicy:NSURLRequestUseProtocolCachePolicy
                                 timeoutInterval:2];

// Run request asynchronously
NSURLConnection *urlConnection = [[NSURLConnection alloc] initWithRequest:urlRequest
                                                                              delegate:self];
if (!urlConnection)
        NSLog(@"Failed to download picture");

然后我使用-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data-(void)connectionDidFinishLoading:(NSURLConnection *)connection将图像放在一起。

答案 1 :(得分:9)

我找到的最佳解决方案: 我使用了AFNetworking https://github.com/AFNetworking/AFNetworking的UIImage。它处理重定向和缓存,因此您可以为您拥有的每个用户ID获取个人资料图片。

NSString *imageUrl = [NSString stringWithFormat:@"http://graph.facebook.com/%@/picture", ((NSDictionary<FBGraphUser> *) [self.friends objectAtIndex: indexPath.row]).id];
[friendCell.imageView setImageWithURL:[NSURL URLWithString:imageUrl] placeholderImage:[UIImage imageNamed:@"profile.jpg"]];

答案 2 :(得分:1)

使用https://github.com/rs/SDWebImage缓存图片。请求图片的网址应为

NSString *string = [NSString stringWithFormat:@"https://graph.facebook.com/%@?fields=picture", userid];

答案 3 :(得分:0)

使用链接:

https://graph.facebook.com/me?fields=picture

获取当前用户的个人资料图片。

Facebook提供Graph API explorer tool,当您想尝试查询或检查返回的输出时,它可以派上用场。

以下是User API Reference的链接。

答案 4 :(得分:0)

如果您的问题与“self.userPofilePicture.profileID = user.id;”有关。

然后self.userProfilePicture返回UIView,所以只需要查看并显示在其中。

不要忘记在Identity Inspector中添加类FBProfilePictureView以及将[FBProfilePictureView类]添加到AppDelegate实现文件中。

我希望这会有所帮助。