iOS facebook sdk 如何下载相册、个人资料照片数据

Posted

技术标签:

【中文标题】iOS facebook sdk 如何下载相册、个人资料照片数据【英文标题】:iOS facebook sdk how to download album, profile photos data 【发布时间】:2012-07-27 15:35:03 【问题描述】:

我想让我的 iPhone 应用程序用户查看并从他们的 facebook 个人资料照片中选择,下载照片以用作个人资料照片。我目前正在使用 Facebook SSO SDK 并成功登录并访问 Graph 信息。已尝试使用

访问照片信息(成功 SSO 登录后)
[facebook requestWithGraphpath:@"me/albums"];

但我只是得到一个空的数据对象作为回报。我试过使用Facebook API explorer,它很有帮助,它确实为我提供了/picture 和/photos 和/albums 的数据。出于某种原因,使用 requestWithGraphPath 和我/相册、我/图片或我/照片时,我没有得到相同的数据。只是简单的“我”可以正常工作,但没有给我任何图片信息。谁能告诉我我做错了什么?

注意:这是 API 参考:Facebook Graph API

我确实让图片配置文件像这样工作:

[facebook requestWithGraphPath:@"me?fields=picture"];

更新:我真的想要所有的个人资料照片,这是一个相册,所以我需要知道如何通过 ios 访问相册。我现在已经成功获取头像了。

我已根据 API 为相册添加了权限“user_photos”和“friends_photos”:

    NSArray *permissions = [[NSArray alloc] initWithObjects:
                            @"user_likes",
                            @"user_birthday",
                            @"email",
                            @"publish_stream",
                            @"publish_actions",
                            @"user_photos",
                            @"friends_photos",
                            nil];
    [facebook authorize:permissions];

当我说我得到的是空数据时,这是返回的 JSON 结果(在 request:didLoad: 中):

 
    data =     (
    );

来自我的日志文件输出:

- (void) request:(FBRequest *)request didLoad:(id)result
    NSLog(@"%@",result);


最后说明:最终起作用的是使用另一台设备,它更新了我的权限,然后一切都开始工作了!我最好的猜测是模拟器和我的 iPhone 没有更新我的 facebook 权限,所以我被拒绝访问照片并获得一个空的数据数组。

这个 SO 问题也很有帮助:How to get photos of a facebook album in iPhone SDK?

【问题讨论】:

【参考方案1】:

为了未来的观众,我将回答我自己的问题,因为我还没有收到其他人的完整答案。

首先,您必须拥有正确的权限,"user_photos""friends_photos"。然后你必须确保你的测试设备更新你的权限——我认为重启设备是最终为我做的。

完成此操作后,您可以在通过 SSO 登录后,使用以下调用获取专辑的 JSON 列表:

[facebook requestWithGraphPath:@"me/albums" andDelegate:self];

这将为 JSON 数组(在键 data 下)提供有关每张专辑的各种信息,包括 ID。要获取特定相册 ID(例如“123456789”)的照片列表,请执行以下操作:

NSString * albumId = @"123456789";
NSString * path = [NSString stringWithFormat:@"%@/photos", albumId];
[facebook requestWithGraphPath:path andDelegate:self];

您的响应当然会通过FBRequestDelegate 方法request:didLoad 来处理JSON 数据。

【讨论】:

我可以得到一份你在这方面的工作吗?我也想允许用户从他们的 FB 获取照片,但不知道从哪里开始。 我得到了结果=== data = ( ); 在我/专辑请求上。你能建议什么是错的吗? @Imran 您是否检查了您的权限并确保您已正确登录?除此之外,我建议你发布一个新问题,祝你好运! 我登录正确。你建议的权限是什么。 同上,user_photos 和 friends_photos。【参考方案2】:

下载 FBGraph Api 文档文件夹,然后将其添加到您的文件夹中。并阅读 facebook 开发者网站 http://developers.facebook.com/docs/reference/api/ 上的说明。

这是示例代码 - sample code

在此您将在UIAlertView 中获得用户个人资料图片。你可以把它显示在你想要的地方。

【讨论】:

谢谢,我会看一下示例代码——虽然我看到不再维护它的注释,这是最新的吗? 嘿,我相信你会发现它很棒。我在我的一个应用程序中使用过它。有一种方法 -(IBAction)getAuthorPictureButtonPressed:(id)sender。只需检查一下 我试试看,绝对有帮助。 如何获取所有个人资料相册图片,你知道吗?我在示例代码中没有看到这样的示例。 对于所有朋友的个人资料图片,您必须制作一个包含所有朋友 id 的数组,然后将 id 替换为用户 id 并逐个发送请求...这取决于您的逻辑。对于专辑请点击我给你的链接,这里是获取专辑照片的网址。

以上是关于iOS facebook sdk 如何下载相册、个人资料照片数据的主要内容,如果未能解决你的问题,请参考以下文章

Facebook iOS SDK - 获取用户相册

使用 iOS SDK 将多张照片作为单个帖子上传,例如时间线照片,而不是 Facebook 中的相册

Facebook iOS SDK - 分享用户照片

Facebook iOS-sdk 并发布本地 (UI)Image

使用 Facebook php sdk 访问相册/照片时,“请求此资源需要访问令牌”

如何使用 Swift 3 从 Facebook SDK 下载照片?