iOS Facebook SDK如何下载相册、个人资料照片数据?

5
我希望我的iPhone应用程序用户能够查看并选择他们的Facebook个人资料照片,下载照片以用作个人资料图片。我目前正在使用Facebook SSO SDK,并成功登录和访问Graph信息。尝试使用成功的SSO登录后访问照片信息,如下所示:
[facebook requestWithGraphPath:@"me/albums"];

但是我只收到了一个空数据对象作为返回。我尝试使用Facebook API explorer,它非常有用,可以给我提供/picture、/photos和/albums的数据。但是,我使用requestWithGraphPath获取me/albums、me/picture或me/photos时没有获得相同的数据。仅仅使用“me”可以正常工作,但是不会给我任何图片信息。有人能告诉我我做错了什么吗?
注意:这是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];

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

 {
    data =     (
    );
}

从我的日志文件输出中:

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

}

最终注记:最终起作用的是使用另一台设备,更新了我的权限,然后一切正常运行!我猜想是模拟器和我的iPhone没有更新我的Facebook权限,所以我被拒绝访问照片,并得到了一个空的数据数组。
这个 SO 问题也很有帮助:如何在 iPhone SDK 中获取 Facebook 相册的照片?
2个回答

8
为了方便未来的观众,我将自己问题的答案放在这里,因为我没有从其他人那里得到一个完整的答案。首先,你必须拥有正确的权限,要么是"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上获取照片,但不知道从哪里开始。 - Shinigamae
我在me/albums请求中得到了result==={ data = ( ); }。你能否建议一下出了什么问题。 - Imran
@Imran,您是否检查了自己的权限并确保已正确登录?除此之外,我建议您发布一个新问题,祝您好运! - Alan Moore
我已经正确登录。你建议使用什么权限? - Imran
如上所述,user_photos 和 friends_photos。 - Alan Moore

1

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

这是示例代码 - 示例代码

在此代码中,您将在UIAlertView中获取用户个人资料图片。您可以在需要的地方显示它。


谢谢,我会查看示例代码--尽管我看到有一个注释说它已不再维护,这是最新的吗? - Alan Moore
嘿,我相信你会觉得它很棒。我已经在我的一个应用程序中使用过它了。 有一个方法-(IBAction)getAuthorPictureButtonPressed:(id)sender。只需检查它即可。 - TheTiger
我会试一下,肯定很有帮助。 - Alan Moore
我该如何获取所有个人资料照片相册中的图片,你知道吗?我在示例代码中没有看到这方面的示例。 - Alan Moore
对于所有朋友的个人资料图片,您需要创建一个包含所有朋友ID的数组,然后将ID替换为用户ID并逐个发送请求...这取决于您的逻辑。至于相册,请点击我给您的链接,这是获取相册照片的URL。 - TheTiger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接