调用Vimeo API时files属性未返回的技术求助
解决Vimeo API请求中
files字段缺失的问题 我来帮你排查这个问题,大概率是两个核心点没处理到位,咱们一步步来解决:
首先检查:请求URL是否真的带上了
?fields=name,files参数
你的代码里调用RNFetchBlob.fetch时传入的uri变量,看起来没有拼接这个查询参数。比如如果是获取单个视频信息,正确的URL格式应该是:const uri = `https://api.vimeo.com/videos/${你的视频ID}?fields=name,files`;你可以在请求前打印
uri确认参数是否存在:console.log('完整请求地址:', uri);这是最常见的原因——你说期望携带参数,但代码里的
uri可能漏加了这段。其次验证:Access Token的权限范围是否足够
Vimeo API的files字段需要video_files的权限范围,如果你的access token没有申请这个权限,就算请求了fields=files,API也会自动过滤掉这个字段。
你可以去Vimeo开发者后台查看应用权限,或者在获取token时确保请求了scope=video_files(如果是授权码流程的话)。额外排查:用工具直接测试API排除代码问题
可以用Postman或者curl直接调用Vimeo API,传入相同的access token和URL,看看响应里是否有files字段。比如curl命令:curl -H "Authorization: Bearer 你的accessToken" "https://api.vimeo.com/videos/你的视频ID?fields=name,files"如果工具调用能返回
files,那问题就在React Native的代码里;如果工具也返回不了,那就是权限或者视频本身的问题(比如视频是私有且未授权,或者没有可访问的文件)。修正后的完整代码示例
这里给你补全参数后的代码:const targetVideoId = '123456789'; // 替换成你的视频ID const accessToken = '你的有效访问令牌'; const requestUri = `https://api.vimeo.com/videos/${targetVideoId}?fields=name,files`; RNFetchBlob.fetch('GET', requestUri, { "Authorization": `Bearer ${accessToken}`, }) .then((data) => { const responseData = JSON.parse(data.data); console.log('API响应:', JSON.stringify(responseData)); resolve(responseData); }) .catch((error) => { console.error('请求失败:', error); reject(error); });
内容的提问来源于stack exchange,提问作者JeremyF
相关产品推荐
相关产品推荐

