我无法使用新的 Facebook SDK 获取用户的个人资料图片。这里的所有答案都使用旧 SDK 中不再有效的方法。
我试过使用 Facebook 教程中推荐的 FBProfilePictureView,但是这张图片没有被缓存,我认为它不能转换成 UIImage。
任何人都可以提供一些帮助吗?谢谢!
好的,我终于用以下方法得到了这个:
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
把图像放在一起。
我找到的最佳解决方案:我使用了来自 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"]];
使用https://github.com/rs/SDWebImage缓存图像。请求图像的 URL 应该是
NSString *string = [NSString stringWithFormat:@"https://graph.facebook.com/%@?fields=picture", userid];
使用链接:
https://graph.facebook.com/me?fields=picture
获取当前用户的头像。
Facebook 提供了Graph API 浏览器工具,当您想尝试查询或检查返回的输出时,它可以派上用场。
这是User API Reference的链接。
如果您的问题与“self.userPofilePicture.profileID = user.id;”有关。
然后 self.userProfilePicture 返回 UIView 所以只需取 View 并在其中显示。
不要忘记在 Identity Inspector 中添加类 FBProfilePictureView 以及 [FBProfilePictureView 类] 到 AppDelegate 实现文件。
我希望这会有所帮助。