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

Posted

技术标签:

【中文标题】使用 3.0 SDK 获取 Facebook 个人资料图片【英文标题】:Get Facebook profile pic using 3.0 SDK 【发布时间】:2012-08-29 03:43:30 【问题描述】:

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

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

任何人都可以提供一些帮助吗?谢谢!

【问题讨论】:

【参考方案1】:

好的,我终于用以下方法得到了这个:

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 将图像放在一起。

【讨论】:

我通过 NSURLConnection *urlConnection 获取 FB 个人资料图片,但请告诉我如何在 UIImageview 上实现此功能【参考方案2】:

我找到的最佳解决方案: 我使用了来自 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"]];

【讨论】:

什么是self.friends?【参考方案3】:

使用https://github.com/rs/SDWebImage 缓存图像。请求图片的 URL 应该是

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

【讨论】:

在将 URL 更改为 NSString *string = [NSString stringWithFormat:@"https://graph.facebook.com/%@/picture", userid]; 后为我工作【参考方案4】:

使用链接:

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

获取当前用户的头像。

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

这是User API Reference的链接。

【讨论】:

如何从该链接转到将其缓存到我的应用程序中?【参考方案5】:

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

然后 self.userProfilePicture 返回 UIView 所以只取 View 并在其中显示。

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

我希望这会有所帮助。

【讨论】:

我认为这应该与 FBLoginView 结合使用

以上是关于使用 3.0 SDK 获取 Facebook 个人资料图片的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS Facebook SDK 3.0 上作为粉丝页面发布

使用 javascript SDK 从 facebook graph api 获取个人资料图片

无法在 Laravel 4 中使用 Facebook 的 PHP SDK 获取用户个人资料

使用 3.0 SDK 的 Facebook 应用程序

无需 facebook api 或 facebook sdk 即可获取 facebook 数字 ID 和个人资料图片

使用 Facebook-Android SDK 3.0 正确请求发布权限