【问题标题】:Embed youtube videos using oembed使用 oembed 嵌入 youtube 视频
【发布时间】:2011-10-30 17:56:50
【问题描述】:

我想使用 oembed 从带有 jQ​​uery 的 youtube 链接中获取嵌入代码:

var url = "http://www.youtube.com/watch?v=iwGFalTRHDA";
url = encodeURIComponent(url);

$.getJSON('http://youtube.com/oembed?url='+url+'&format=json', function(data) {
console.log(data);
});

嗯,我没有得到任何数据。

有趣的是,如果我浏览到 url,我会得到正确的响应:

http://www.youtube.com/oembed?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiwGFalTRHDA&format=json` 

引导我去

{
provider_url: "http://www.youtube.com/"
title: "Trololo"
html: "<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/iwGFalTRHDA?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/iwGFalTRHDA?version=3" type="application/x-shockwave-flash" width="425" height="344" allowscriptaccess="always" allowfullscreen="true"></embed></object>"
author_name: "KamoKatt"
height: 344
thumbnail_width: 480
width: 425
version: "1.0"
author_url: "http://www.youtube.com/user/KamoKatt"
provider_name: "YouTube"
thumbnail_url: "http://i2.ytimg.com/vi/iwGFalTRHDA/hqdefault.jpg"
type: "video"
thumbnail_height: 360
}

我也使用了 jquery oembed 插件,但总是抛出 onError 选项,即使请求成功也是如此。

我真的很期待一些想法......

【问题讨论】:

    标签: javascript jquery json youtube oembed


    【解决方案1】:

    如果我将原始 trololo url 嵌入到 oembed url 中,我会得到很好的 json 数据。我猜通过在地址栏中输入编码版本无论如何都会进行一层解码,所以尝试只发送原始版本:

    http://youtube.com/oembed?url=http://www.youtube.com/watch?v=iwGFalTRHDA&format=json
    

    【讨论】:

    • 我之前尝试过,但正如 mjhm 所说,它是跨域 ajax 请求是显示停止器-
    【解决方案2】:

    实际上,问题在于您使用跨域 ajax 请求违反了浏览器的同源策略。有一些潜在的工作解决方法——不幸的是最好的JSONP, isn't implemented by YouTube。下一个最好的方法是使用 Flash 进行传输。这由YUI-IO utility 使用。你也可以看到Jquery suggestions here

    【讨论】:

      【解决方案3】:

      使用json-c版本:https://developers.google.com/youtube/2.0/developers_guide_jsonc

          var id = "iwGFalTRHDA";
          $.ajax({
              url: "https://gdata.youtube.com/feeds/api/videos/" + id + "?v=2&alt=jsonc",
              dataType: "jsonp",
              success: function (data) {
                  console.log(data);
              }
          });
      

      【讨论】:

      • 当我测试一个类似的url时,我收到一个json格式的错误信息:{"apiVersion":"2.1","error":{"code":410,"message":"No longer available","errors":[{"domain":"GData","code":"NoLongerAvailableException","internalReason":"No longer available"}]}}
      • 是的,一样。已弃用!
      【解决方案4】:

      我遇到了类似的问题,原来url 查询字符串参数使用的是www.youtube.com 域,而我对oembed 端点的调用使用的是youtube.com/oembed。使用www.youtube.com/oembed 解决了这个问题。

      【讨论】:

        【解决方案5】:

        遇到同样的问题。我已经“解决”了这个问题,方法是让我的服务器中的 url 下载 JSON,然后将其发送给客户端。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-04
          • 2012-06-25
          • 1970-01-01
          • 2020-08-25
          • 2015-06-03
          相关资源
          最近更新 更多