You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:50:45