Youtube API 错误 v3 - 'No Filter Selected'

Youtube API error v3 - 'No Filter Selected'

我正在使用 Youtube V3 Api,这里是从我的 YouTube 频道中提取前十名视频的代码片段。 (同样的查询在 google API 资源管理器 @ https://developers.google.com/apis-explorer/ 中完美运行)

url_start = "https://www.googleapis.com/youtube/v3/videos?" + \ 
            "order=viewCount&part=snippet&forMine=true" + \
            "&type=video&maxResults=10&key=MY_API_KEY"
data = requests.get(url_start).json()

但是我得到这个错误:

{u'error': {u'code': 400,
            u'message': u'No filter selected.',
            u'errors':[{u'locationType': u'parameter',
                        u'domain': u'youtube.parameter',
                        u'message': u'No filter selected.',
                        u'reason': u'missingRequiredParameter',
                        u'location': u''}]}}

我知道密钥是有效的,因为如果我可以在没有 forMine 的情况下进行相同的查询

https://www.googleapis.com/youtube/v3/search?part=snippet&key=MY_API_KEY

而且我从 YouTube 上获得了总体排名靠前的视频。有更好的方法或解决方法吗?

forMine 参数仅适用于经过身份验证的用户(已使用您的应用程序完成 oAuth2 流程的用户),因此您的请求抱怨缺少的参数是所需的访问令牌。

如果您的目标是拥有一个私人脚本 运行 在任何给定时间向您显示您的前十个视频,那么您可以在您的应用中设置一个临时例程,允许您手动验证oAuth2 并捕获刷新令牌;如果您存储它,那么在以后的请求中,刷新令牌可以获得访问令牌,而无需您手动授权。

如果您的目标是创建一个仪表板以便您的用户可以看到他们自己的前十个视频,那么您只需将 oAuth2 身份验证连接到您的流程中,并在每个请求中发送访问令牌。 Python 的 gapi client 使这变得非常简单。

如果不带视频列表的forMine参数,可以返回搜索端点,传入用户频道ID(这个需要提前知道,当然,而经过身份验证的方法适用于任何登录的用户,而您不必知道他们是谁):

https://www.googleapis.com/youtube/v3/search?order=viewCount&part=snippet&channelId={channel id here}&maxResults=25&key={YOUR_API_KEY}