Facebook iOS SDK:获取专辑封面图片

Posted

技术标签:

【中文标题】Facebook iOS SDK:获取专辑封面图片【英文标题】:Facebook iOS SDK: get album's cover picture 【发布时间】:2015-04-17 09:50:56 【问题描述】:

我正在使用 Parse 包含的 Facebook SDK,我需要显示给定用户的专辑列表。我可以正确地获取专辑列表:

[FBRequestConnection startWithGraphpath:[NSString stringWithFormat:@"/%@/albums", self.facebookUserId]
                          completionHandler:^(  FBRequestConnection *connection, id result,  NSError *error )
        
            // result will contain an array with your user's albums in the "data" key
            NSArray * albumsObjects = [result objectForKey:@"data"];
            NSMutableArray * albums = [NSMutableArray arrayWithCapacity:albumsObjects.count];

            for (NSDictionary * albumObject in albumsObjects)
            
                //DO STUFF
            
            self.albums = albums;
            [self.tableView reloadData];
        ];

此时,我需要为每张专辑获取封面图片。 专辑对象同时具有id 字段和cover_photo 字段。我已经尝试将两者都用作图形查询的参数相同的结果:result is nil

NSDictionary *params = @ @"type": @"album";//, @"access_token": [[PFFacebookUtils session] accessToken];

[FBRequestConnection startWithGraphPath: [NSString stringWithFormat:@"/%@/picture", album.coverPath]
                             parameters:params
                             HTTPMethod:@"GET"
                      completionHandler:^( FBRequestConnection *connection, id result,  NSError *error ) 

                          NSString * urlString = [result objectForKey:@"url"];
                          NSURL *url = [NSURL URLWithString:urlString];
                          NSURLRequest *request = [NSURLRequest requestWithURL:url];

                          [cell.imageView setImageWithURLRequest:request
                                                placeholderImage:placeholderImage
                                                         success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) 

                                                             weakCell.imageView.image = image;
                                                             [weakCell setNeedsLayout];

                                                          failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) 
                                                             NSLog(@"%@",error.debugDescription);
                                                         ];
                      ];

我在 appdelegate [PFFacebookUtils initializeFacebook]; 我在那里管理在所有其他地方完美运行的会话。

这些是我在登录时需要的权限

@[@"user_about_me", @"email", @"user_birthday", @"user_location" ,@"user_friends", @"publish_actions", @"user_photos", @"friends_photos"]

想法? 也在文档中 https://developers.facebook.com/docs/graph-api/reference/v2.3/album/picture 它说要使用专辑 ID,但是封面照片 ID 是干什么用的?

【问题讨论】:

阅读我的答案...2.4 api的答案...可能会有所帮助.........***.com/questions/30207465/… 【参考方案1】:

这有点奇怪,但是当我在图形 API 资源管理器中尝试 /<id>/picture 时,它会自动将 ?redirect=false 附加到请求中。与您的情况类似,当我从 Objective-C 对该边缘进行 Graph API 调用时,它给了我null。因此,从图形 API 资源管理器中获得了提示,我尝试将此参数附加到我的请求中,这实际上使它起作用。尝试添加它,看看它是否有效。所以,在你的情况下:

[NSString stringWithFormat:@"/%@/picture?redirect=false", album.coverPath]

响应看起来像这样:


    data =     
        "is_silhouette" = 0;
        url = "https://fbcdn-sphotos-f-a.akamaihd.net/hphotos...";
    ;

您可以在此处从data 获取url 字段,它应该会给您封面照片。

【讨论】:

以上是关于Facebook iOS SDK:获取专辑封面图片的主要内容,如果未能解决你的问题,请参考以下文章

ChromeCast SDK 专辑封面

Facebook时间线封面照片iphone

确定歌曲在 iOS 中是不是有专辑封面

在 iOS 设备的锁屏上添加自定义专辑封面

从 Facebook SDK 获取数据到 iOS 应用

如何以编程方式获取音乐专辑封面