我正在尝试使用API在我的客户网站上嵌入一个实时事件视频。我正在尝试使用youtube.livebroadcasts.list检索公共直播视频列表。
它正在使用API Explorer查询构建器。
当我将请求复制到浏览器时,我会收到login required
错误。
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
问题是:
- 如果我要求公众实时广播,为什么我需要身份验证?API密钥还不够吗?
- 是否有其他方法可以获取所有用户的公共直播事件?
该特定的API端点不仅返回公共流;它也可以返回私人(除了有关公共流的私人信息之外)。因此,授权级别位于端点的前面,因此您必须使用OAuth2对用户进行身份验证(因此,用户授予您明确的许可,以便您能够访问该数据)。
如果您确定只需要有关广播的公共数据,则应使用数据API的视频搜索列表端点。您可以将" ChannelID"参数设置为用户频道的ID,将"类型"参数"设置为"视频",然后将" EventType"参数设置为"已完成"," Live"或"即将到来"。通过使用" EventType"参数,您将仅限于广播事件。因此,例如,您可以称之为这样的URL:
GET https://www.googleapis.com/youtube/v3/search?eventType=live&part=snippet&channelId=UCoMdktPbSTixAyNGwb-UYkQ&type=video&key={YOUR_API_KEY}
不幸的是,在同一API呼叫中无法完成,活动和即将到来的广播,因此,如果您需要所有3个电话,则必须拨打3个电话。
您可以使用标准Search/list
端点从特定频道返回实时事件,而不会被认证为该频道/用户,如果您知道该频道的channelId
:
part -> snippet
channelId
-> [channelId of the channel/user with the live event]
eventType -> live
type -> video
(将eventType
设置为live
时需要)
HTTP GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={channelId}&eventType=live&type=video&key={YOUR_API_KEY}
如果您检查了链接的页面youtube.livebroadcasts.list。
授权
此请求需要至少一个 以下范围(阅读有关身份验证和 授权)。
https://www.googleapis.com/auth/youtube.readonly
https://www.googleapis.com/auth/youtube
您不能对此使用公共密钥。您必须使用oauth2进行身份验证以访问youtube.livebroadcasts.list。