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

Ala*_*ore 5 iphone facebook facebook-graph-api ios

我想允许我的iPhone App用户查看并从他们的Facebook个人资料照片中选择,下载照片以用作个人资料照片.我目前正在使用Facebook SSO SDK并成功登录并访问Graph信息.尝试访问照片信息(成功登录SSO后)使用

[facebook requestWithGraphPath:@"me/albums"];
Run Code Online (Sandbox Code Playgroud)

但我只是得到一个空的数据对象作为回报.我尝试过使用Facebook API资源管理器,它非常有用,它确实为我提供了/ picture和/ photos// album的数据.出于某种原因,我没有使用requestWithGraphPath与我/专辑,我/图片或我/照片获得相同的数据.只是简单的"我"工作正常,但没有给我任何图片信息.谁能告诉我我做错了什么?

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

我确实得到了这样的图片配置文件:

[facebook requestWithGraphPath:@"me?fields=picture"];
Run Code Online (Sandbox Code Playgroud)

更新:我真的想要所有的配置文件照片,这是一个相册,所以我需要知道如何通过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];
Run Code Online (Sandbox Code Playgroud)

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

 {
    data =     (
    );
}
Run Code Online (Sandbox Code Playgroud)

从我的日志文件输出:

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

}
Run Code Online (Sandbox Code Playgroud)

最后注意:最终工作的是使用另一个设备,它更新了我的权限,然后一切都开始工作了!我最好的猜测是模拟器和我的iPhone没有更新我的Facebook权限,所以我被拒绝访问照片和获取空数据阵列.

这个问题也是一个很大的帮助:如何在iPhone SDK中获取Facebook相册的照片?

Ala*_*ore 8

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

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

完成后,您可以使用此调用通过SSO登录后获取相册的JSON列表:

[facebook requestWithGraphPath:@"me/albums" andDelegate:self];
Run Code Online (Sandbox Code Playgroud)

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

NSString * albumId = @"123456789";
NSString * path = [NSString stringWithFormat:@"%@/photos", albumId];
[facebook requestWithGraphPath:path andDelegate:self];
Run Code Online (Sandbox Code Playgroud)

您的响应当然会通过您可以处理JSON数据的FBRequestDelegate方法来实现request:didLoad.