Javascript Youtube API-无法将视频添加到播放列表
我已经成功地从Youtube API v3获取了请求,但是在将视频添加到播放列表中时,在获取POST版本时遇到了问题。我尝试了很多组合,比如将键放在查询字符串中,将访问令牌放在查询字符串或标题中,json与jsonp,但仍然没有成功 我让它在中工作得很好,但是它打印出来的请求只是基本的部分,没有上下文代码使它工作,所以我猜我在调用ajax post命令的实现中弄乱了一些东西。以下是我正在做的: var myAccessToken=blahblah//来自oauth2,适用于其他调用 $.ajax{ 类型:POST,, 网址:https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&access_token= +myAccessToken, 数据:{ 片段:{ 播放ID:plijo1t8cdbpghojrgegfmb-vtausx9, 资源ID:{ 种类:youtubevideo, videoId:KMGuyGY5gvY }, } }, 成功:functiondata、textStatus、请求{ console.login ajax调用成功,数据:,数据; }, 数据类型:“jsonp”Javascript Youtube API-无法将视频添加到播放列表,javascript,jquery,ajax,youtube,youtube-api,Javascript,Jquery,Ajax,Youtube,Youtube Api,我已经成功地从Youtube API v3获取了请求,但是在将视频添加到播放列表中时,在获取POST版本时遇到了问题。我尝试了很多组合,比如将键放在查询字符串中,将访问令牌放在查询字符串或标题中,json与jsonp,但仍然没有成功 我让它在中工作得很好,但是它打印出来的请求只是基本的部分,没有上下文代码使它工作,所以我猜我在调用ajax post命令的实现中弄乱了一些东西。以下是我正在做的: var myAccessToken=blahblah//来自oauth2,适用于其他调用 $.aja
}; 我相信您在数据资源之前缺少了“snippet”部分。我让它工作了,但我不确定问题出在哪一部分。我遇到了这个例子: 有一个例子,它做的事情几乎和我需要的一样,一旦我改变了语法,它就成功了。以下是我最终得到的结果:
var accessToken = "blahblah";
var metadata = {
snippet: {
playlistId: "WL", //specifically works for WatchLater list,
//but a playlist ID can be used too
resourceId: {
kind: "youtube#video",
videoId: "eNAajAflpBQ"
},
}
};
$.ajax({
method: "POST",
url: "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet",
data: JSON.stringify(metadata),
headers: {
Authorization: 'Bearer ' + accessToken
},
contentType: 'application/json',
}).done( function(data, textStatus, request) {
console.log("in success of ajax call, data: ", data);
});
感谢那些调查并提出建议的人 最初我请求的是SCOPES=https://www.googleapis.com/auth/youtube.readonly"
根据:
授权书
此请求需要至少使用以下一项进行授权:
以下作用域详细介绍了身份验证和
授权
范围
我需要请求一个额外的范围
我的插入内容如下所示:
let request = gapi.client.youtube.playlistItems.insert({
part: 'snippet',
resource: {
snippet: {
playlistId: 'PLAYLIST_ID',
resourceId: {
videoId: 'YOUTUBE_TRACK_ID,
kind: 'youtube#video'
}
}
}
})
request.execute(function (response) {
...
})
好主意。您的意思是,该部分在ajax对象中与url、数据和类型处于同一级别吗?我不认为这部分是它知道要寻找的东西,当我尝试它时,没有任何改变。我还尝试从url查询字符串中提取part=snippet片段,以防出现冗余问题,但随后它抱怨需要指定一个部分。所以零件和过滤器可能不是同一种东西。。。你有没有想过另一种方式?任何地方都有关于该语法的文档吗?我正在使用Javascript查找用于将视频添加到播放列表的代码的insert。Python中的一个类似示例也有一条未选择过滤器的消息,并且要求请求的partin顺序是有效的。但是,从我所知道的情况来看,gapi.client.youtube.playlists.insert所使用的对象类型与jquery ajax调用所使用的对象类型不同,尽管有一些相似之处。这些JS和python api似乎将part指定为传递的参数,但在ajax命令中,url中的part=snippet指定了该部分-特别是因为它抱怨如果我取出它,就没有一个。通过进一步研究,我怀疑这可能是GET vs POST问题。我正在尝试使用jsonp,因为json在跨域时不起作用。但jsonp似乎只适用于GET。据我所知,youtube API调用插入视频是在等待帖子,尽管我不确定这是一个要求。我一直在尝试很多事情,但都没能成功获得一个帖子。我在看。很可能是你在做get而不是post。使用CORS跨来源资源共享。