Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Youtube API-无法将视频添加到播放列表_Javascript_Jquery_Ajax_Youtube_Youtube Api - Fatal编程技术网

Javascript Youtube API-无法将视频添加到播放列表

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

我已经成功地从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”
}; 我相信您在数据资源之前缺少了“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跨来源资源共享。