首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >面向youtube的Oembed

面向youtube的Oembed
EN

Stack Overflow用户
提问于 2012-10-17 07:28:33
回答 2查看 2.7K关注 0票数 0

我是否需要开发者的钥匙,才能在我的网站中使用oembed for youtube?

问题是,下面的代码不起作用,也不会返回到succes。

代码语言:javascript
复制
 $.ajax({
                    url: "http://www.youtube.com/oembed?url=http://www.youtube.com/watch?v=PVzljDmoPVs",
                    dataType: "jsonp",
                    timeout: 15000,
                    success: function (jo) {
                        if (jo) {
                            setIMg(jo.thumbnail_url);
                            setTitle(jo.title);
                        }
                    }
                });

但是当我在浏览器中打开url时,它就给了我json:

{"provider_url": "http:\/\/www.youtube.com\/", "thumbnail_url": "http:\/\/i1.ytimg.com\/vi\/PVzljDmoPVs\/hqdefault.jpg", "title": "David Guetta - She Wolf (Falling To Pieces) ft. Sia", "html": "\u003ciframe width=\"480\" height=\"270\" src=\"http:\/\/www.youtube.com\/embed\/PVzljDmoPVs?fs=1\u0026feature=oembed\" frameborder=\"0\" allowfullscreen\u003e\u003c\/iframe\u003e", "author_name": "davidguettavevo", "height": 270, "thumbnail_width": 480, "width": 480, "version": "1.0", "author_url": "http:\/\/www.youtube.com\/user\/davidguettavevo", "provider_name": "YouTube", "type": "video", "thumbnail_height": 360}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-17 22:45:59

首先,您不需要开发人员密钥就可以使用YouTube的oembed端点。

其次,YouTube在其oEmbed端点上不支持JSONP,这就是调用失败的原因。为了修复它,可以使用第三方oEmbed提供程序(如reEmbed.me )。

下面是示例代码:

代码语言:javascript
复制
var serviceUrl = "http://reembed.me/api/v1/OEmbed?url=";
var url = "http://www.youtube.com/watch?v=PVzljDmoPVs";
$.getJSON(serviceUrl + encodeURIComponent(url) + "&callback=?", null, function (jo) {
    if (jo) {
        setIMg(jo.thumbnail_url);
        setTitle(jo.title);
    }
});

请注意,正在传递的链接是实际的视频url,而不是oembed端点链接。

票数 1
EN

Stack Overflow用户

发布于 2017-07-03 20:14:41

不,我们不需要任何开发人员密钥来使用任何oEmbed提供者的oEmbed端点。

oEmbed规范支持两种格式,一种是json,另一种是xml类型。oEmbed提供者将以任何一种格式提供对oEmbed api的响应。

根据规范,没有像jsonp这样的格式,这就是为什么你无法从像"youtube“这样的oEmbed提供商那里得到适当的响应。使用type查询param调用url,json应该会产生预期的结果

代码语言:javascript
复制
url: "http://www.youtube.com/oembed?type=json&url=http://www.youtube.com/watch?v=PVzljDmoPVs"

您可以在请求中将type值指定为jsonxml,否则提供程序将默认使用json进行响应。

oEmbed规范没有提到任何关于JSONP的支持:所以,youtube还没有提供对JSONP的支持。

无论如何,要访问跨站点资源(CORS -交叉源资源共享),响应头必须包含Access-Control-Allow-Origin集,否则我们可以使用默认的jsonp标准,而youtube不支持这种标准。

我希望这个JSONP的小黑客能解决我们的需求。否则,我们可以选择像月图书馆这样的外部库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12929249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档