我不确定这是YouTube的数据API的不一致,还是YouTube错误的错误命名。
YouTube上有一个没有任何内容的公共频道:
https://www.youtube.com/channel/UCvAHk_1_TMmq6SW0XA9BcgA。
如果我查询Channels:list (使用此通道ID UCvAHk_1_TMmq6SW0XA9BcgA的查询),将得到以下响应:
{
"items": [
{
"id": "UCvAHk_1_TMmq6SW0XA9BcgA",
"snippet": {
"title": "level10store0"
},
"status": {
"privacyStatus": "public",
"isLinked": true,
"longUploadsStatus": "longUploadsUnspecified"
}
}
]
}如果我通过Playlists:list (查询)查询该频道的所有播放列表,就会得到以下响应:
{
"kind": "youtube#playlistListResponse",
"etag": "iziRvpOe3rkNWHlySTxLgAk4dJI",
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 5
},
"items": []
}但是,使用YouTube的PHP和Playlist:list,您将得到以下信息的响应错误:
domain=youtube.playlist,reason=channelNotFound,location=channelId,locationType=parameter
为什么YouTube的PHP会给出一个channelNotFound错误而不是像YouTube的数据资源管理器那样的空响应?
更新1:
YouTube的data在用户自己初始化的OAuth握手上提供了一个通道。我的应用程序请求为进一步的请求提供脱机访问令牌。如果使用此访问令牌,我将体验上述行为。我认为令牌是有效的,因为我对许多其他用户使用相同的进程。如果令牌无效,我就会收到像global.authError或youtube.header.youtubeSignupRequired这样的错误消息。
我的代码如下所示(它适用于许多其他用户):
$youtubeClient->playlists->listPlaylists(
'snippet,contentDetails',
array(
'maxResults' => 50,
'channelId' => $channelId,
'pageToken' => $nextPlaylistPageToken,
'fields' => 'etag,items(id,etag,snippet(publishedAt,channelId,thumbnails/default,title),contentDetails(itemCount)),nextPageToken'
)
);发布于 2021-01-05 10:17:23
记住,YouTube是基于信道的,而不是基于用户的。当用户登录时,他们会选择要访问的通道。当用户同意在PHP上访问您的应用程序时,他们没有选择正确的通道,因此不能访问该通道上的数据。
再次登录用户并同意访问,这一次选择正确的通道。
https://stackoverflow.com/questions/65576257
复制相似问题