Facebook iOS SDK: 获取专辑封面图片
Facebook iOS SDK: get album's cover picture
我正在使用包含 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];
}];
此时我需要为每张专辑获取封面图片。
album 对象有一个 id
字段和一个 cover_photo
字段。我尝试将两者都用作图形查询的参数相同的结果:result
是 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,但是 cover_photo ID 有什么用?
这有点奇怪,但是当我在图表 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
字段,这应该会为您提供封面照片。
我正在使用包含 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];
}];
此时我需要为每张专辑获取封面图片。
album 对象有一个 id
字段和一个 cover_photo
字段。我尝试将两者都用作图形查询的参数相同的结果:result
是 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,但是 cover_photo ID 有什么用?
这有点奇怪,但是当我在图表 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
字段,这应该会为您提供封面照片。