嘿所以我对youtube api非常熟悉..我知道如何阅读频道和播放列表以及获取任何我认为重要的相关视频信息 我正在使用php来完成所有这些工作,但为了确保我对每个请求/响应的工作方式有正确的认识,我在浏览器中使用API资源管理器进行了尝试
现在我正在尝试将视频插入我刚刚创建的播放列表中(也通过API),但我确实无法确定我的请求是否未正确形成
这是请求
POST https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&key={YOUR_API_KEY}
Content-Type: application/json
Authorization: Bearer ya29.1.AADtN_WT2TRZzH1t86nVlX26z9WPp-gnDTxVHGvdQ6xx0vyTzmkYeXkLdJerwllLzF_a
X-JavaScript-User-Agent: Google APIs Explorer
{
"snippet": {
"playlistId": "PL8hD12HFC-nuswc21_e64aPAy9B25sEH7",
"resourceId": {
"videoId": "KMGuyGY5gvY"
}
}
}
这是回复
400 Bad Request
- Show headers -
{
"error": {
"errors": [
{
"domain": "youtube.playlistItem",
"reason": "invalidResourceType",
"message": "Resource type not supported."
}
],
"code": 400,
"message": "Resource type not supported."
}
}
播放列表是我使用API资源管理器创建的空的可公开查看的播放列表,可通过标准YouTube浏览器网站查看。 该视频是从youtube中随机选择的...尝试了一些,因为它可能是视频中的特定问题,但没有运气..我已启用OAuth并使用的帐户是经过验证的youtube合作伙伴
然而,我似乎可以弄清楚为什么资源类型不受支持我已经环顾网络以及左边的答案而没有找到我做错了什么..任何有关此问题的帮助将不胜感激 因为我现在有点卡住了
答案 0 :(得分:14)
您的resourceId
尚未完成,因为它无法向API确定如何解释videoId
参数。尝试设置kind
的{{1}}属性,如下所示:
resourceId
这样,API就会知道'域' (可以这么说)找到你发送的字符串所标识的资源。
答案 1 :(得分:2)
这将有助于构建resourceID
def add_video_to_playlist(videoID,playlistID):
youtube = get_authenticated_service() #write it yourself
add_video_request=youtube.playlistItems().insert(
part="snippet",
body={
'snippet': {
'playlistId': playlistID,
'resourceId': {
'kind': 'youtube#video',
'videoId': videoID
}
#'position': 0
}
}
).execute()
答案 2 :(得分:0)
$playlistId = 'REPLACE_WITH_YOUR_PLAYLIST_ID_STARTS_WITH_PL';
$resourceId = new Google_Service_YouTube_ResourceId();
$resourceId->setVideoId('REPLACE_WITH_VIDEO_ID_YOU_WANT_TO_ADD');
$resourceId->setKind('youtube#video');
$playlistItemSnippet = new Google_Service_YouTube_PlaylistItemSnippet();
$playlistItemSnippet->setTitle('YOUR_VIDEO_TITLE');
$playlistItemSnippet->setPlaylistId($playlistId);
$playlistItemSnippet->setResourceId($resourceId);
$playlistItem = new Google_Service_YouTube_PlaylistItem();
$playlistItem->setSnippet($playlistItemSnippet);
$playlistItemResponse = $youtube->playlistItems->insert(
'snippet,contentDetails', $playlistItem, array());</i>
我的GitHub
提供完整的项目