如何在iPhone SDK中获取Facebook相册的照片?

8

https://dev59.com/VF0a5IYBdhLWcg3wipNA#31789234 - Maulik shah
4个回答

13

/me/albums会返回一个相册对象数组,每个对象都有一个id属性。

如果一个相册的id是99394368305,你可以去

https://graph.facebook.com/99394368305/photos

获取一个包含照片对象的数组。

每个照片对象都有picturesource属性来获取Facebook上的图像数据。

它们还都有一个images数组,如果您想要预缩放的图像而不仅仅是原始图像,也可以使用该数组。


所有 Facebook 查询都会返回 JSON - 我假设您知道如何解析它吗?


你能否回答这个问题吗? https://dev59.com/tVTTa4cB1Zd3GeqPqDPn - Apekshit
@deanWombourne 当我在浏览器上执行https://graph.facebook.com/album_id/photos时,返回“False”。如何在Facebook iOS sdk的FBConnect中使用它? - Jimit
你将什么作为你的“album_id”,并且你有权限查看那个相册吗?(我假设你不只是直接放入album_id!) - deanWombourne
但在我的情况下,它返回一个空的JSON文件,我正在执行您建议的相同过程。 - varun bhardwaj
@varunbhardwaj 请自己提出问题,而不是评论别人的问题 :) 当你提问时,请不要忘记放入你正在使用的代码和作为响应返回的JSON。 - deanWombourne
https://dev59.com/VF0a5IYBdhLWcg3wipNA#31789234 - Maulik shah

3

由于以下步骤,这需要花费很多时间:

1)使用以下方法获取朋友的uid:

NSString *urlString=[NSString stringWithFormat:@"https://graph.facebook.com/me/friends?access_token=%@&fields=id,picture,name,birthday",fbGraph.accessToken];

2) 将朋友的用户id放入获取相册id的位置:

NSString *urlString1=[NSString stringWithFormat:@"https://graph.facebook.com/%@/albums?access_token=%@",obj.uid,fbGraph.accessToken];

NSString *album = [[[_response1 objectForKey:@"data"]objectAtIndex:j]objectForKey:@"name"];

if ([album isEqualToString:@"Profile Pictures"]) 
{
      albumid = [[[_response1 objectForKey:@"data"]objectAtIndex:j]objectForKey:@"id"];
}

3) 然后将相册ID放入以获取该相册中的图片:

NSString *albumUrl=[NSString stringWithFormat:@"https://graph.facebook.com/%@/photos?type=album&access_token=%@",albumid,fbGraph.accessToken];

 NSString *picUrl=[[[[[_response2 objectForKey:@"data"]objectAtIndex:0]objectForKey:@"images"]objectAtIndex:0]objectForKey:@"source"];

亲,请告诉我其他一步得到大尺寸的个人资料图片的方法,以节省时间。

但是我不明白这个...这三种方法我应该放在哪里?我是iOS的新手,请指导我正确。 - Raju

3
以下代码可以帮助您完成此任务。它获取登录用户的相册,然后请求这些相册的照片。在注释的地方,您将可以访问所有照片。欲了解更多信息,请参阅文档: docs
FBRequest *request = [FBRequest requestForGraphPath:@"me/albums"];
[request startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary <FBGraphUser> *my, NSError *error) {
    if ([my[@"data"]count]) {
        for (FBGraphObject *obj in my[@"data"]) {
            FBRequest *r = [FBRequest requestForGraphPath:[NSString stringWithFormat:@"/%@/photos", obj[@"id"]]];
            [r startWithCompletionHandler:^(FBRequestConnection *c, NSDictionary <FBGraphUser> *m, NSError *err) {
                //here you will get pictures for each album
            }];
        }
    }

}];

如果您点击文档链接,您会发现这已经被Facebook开发人员弃用/过时了。因此,我在下面添加了他们的新代码。 - karan

0

Facebook 开发者新代码:

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
                               initWithGraphPath:@"/{user-id}"
                                      parameters:params
                                      HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
                                      id result,
                                      NSError *error) {
    // Handle the result
}];

最新的Facebook Graph API文档


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