iOS平台Facebook SDK Graph API获取视频列表问题
获取Facebook用户视频类内容的Graph API解决方案
嘿,我来帮你搞定这个问题!你当前调用的/me/albums端点只能返回照片类相册,视频相关的内容Facebook是分开存储和提供接口的,所以拿不到视频相册很正常。下面给你两种解决方案,根据你的需求选就行:
方案1:直接获取用户所有视频(无需先找相册)
如果你的目标是拿到用户的所有视频内容,不用纠结视频相册的话,直接调用/me/videos端点就行。这个接口会返回用户上传的所有视频,你可以指定需要的字段,比如标题、创建时间、缩略图等。
代码示例:
FBSDKGraphRequest *videoRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"/me/videos" parameters:@{@"fields": @"id, title, description, created_time, thumbnail"} HTTPMethod:@"GET"]; [videoRequest startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { // 处理返回的视频数据,data数组里就是所有视频对象 NSArray *videos = result[@"data"]; for (NSDictionary *video in videos) { NSString *videoId = video[@"id"]; NSString *videoTitle = video[@"title"]; NSDate *createdTime = [NSDate dateWithTimeIntervalSince1970:[video[@"created_time"] doubleValue]]; // 按需处理其他字段... } } else { NSLog(@"获取视频列表失败: %@", error.localizedDescription); } }];
方案2:先获取视频相册,再拿对应相册里的视频
如果你确实需要先拿到用户的视频相册(比如用户创建的专属视频专辑),可以用/me/video_albums端点获取视频相册列表,之后再通过每个相册的ID调用/{album-id}/videos拿到该相册下的具体视频。
代码示例:
// 第一步:获取视频相册列表 FBSDKGraphRequest *videoAlbumRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"/me/video_albums" parameters:@{@"fields": @"id, name, count"} HTTPMethod:@"GET"]; [videoAlbumRequest startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) { if (!error) { NSArray *videoAlbums = result[@"data"]; // 遍历每个视频相册,获取其中的视频 for (NSDictionary *album in videoAlbums) { NSString *albumId = album[@"id"]; NSString *albumName = album[@"name"]; NSNumber *videoCount = album[@"count"]; NSLog(@"视频相册:%@,包含%@个视频", albumName, videoCount); // 第二步:获取该相册下的视频 FBSDKGraphRequest *albumVideosRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:[NSString stringWithFormat:@"/%@/videos", albumId] parameters:@{@"fields": @"id, title, thumbnail"} HTTPMethod:@"GET"]; [albumVideosRequest startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id albumResult, NSError *albumError) { if (!albumError) { NSArray *albumVideos = albumResult[@"data"]; // 处理该相册下的视频... } }]; } } else { NSLog(@"获取视频相册失败: %@", error.localizedDescription); } }];
权限说明
你已经配置了user_videos权限,这个权限刚好是获取用户视频内容和视频相册所必需的,所以权限方面不需要额外调整,只要用户授权成功就可以正常调用上述接口。
如果返回结果为空,可以先在Facebook的Graph API Explorer里测试这些端点,确认用户确实有视频/视频相册,再排查代码中的请求参数或连接问题。
内容的提问来源于stack exchange,提问作者rickrvo
相关产品推荐
相关产品推荐

