当你在"你现在在做什么?"中粘贴youtube链接时,他们如何做到这一点?然后出现在链接,youtube图片+标题+描述?他们是怎么做到的,这很难做到吗?这样做的例子很棒!
Facebook中的认可适用于大多数链接,而不仅仅是来自像YouTube这样的顶级链接.所以我的猜测是,他们试图找出该页面是否包含指向替代表示的链接,例如Feed.当他们找到该链接时,他们会拨打电话获取Feed内容.进料的格式是标准化的大多RSS或Atom,并清楚地具有可识别的特性,例如title,thumbnail,description等.
因此,假设您有YouTube视频链接,例如http://www.youtube.com/watch?v=0Mz4NTozNXw.在其源代码中,它包含以下链接以及可提供所需元数据的备用表示:
<link rel="alternate" type="application/json+oembed" href="http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D0Mz4NTozNXw&format=json" title="Crispy Onion Rings Recipe - How to Make Crispy Onion Rings" />
<link rel="alternate" type="text/xml+oembed" href="http://www.youtube.com/oembed?url=http%3A//www.youtube.com/watch?v%3D0Mz4NTozNXw&format=xml" title="Crispy Onion Rings Recipe - How to Make Crispy Onion Rings" />
Run Code Online (Sandbox Code Playgroud)
如果我们要获取链接的内容type="text/xml+oembed",我们会得到以下XML:
<oembed>
<provider_url>http://www.youtube.com/</provider_url>
<title>Crispy Onion Rings Recipe - How to Make Crispy Onion Rings</title>
<html><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/0Mz4NTozNXw&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/0Mz4NTozNXw&fs=1" type="application/x-shockwave-flash" width="480" height="295" allowscriptaccess="always" allowfullscreen="true"></embed></object></html>
<author_name>foodwishes</author_name>
<height>295</height>
<thumbnail_width>480</thumbnail_width>
<width>480</width>
<version>1.0</version>
<author_url>http://www.youtube.com/user/foodwishes</author_url>
<provider_name>YouTube</provider_name>
<thumbnail_url>http://i1.ytimg.com/vi/0Mz4NTozNXw/hqdefault.jpg</thumbnail_url>
<type>video</type>
<thumbnail_height>360</thumbnail_height>
</oembed>
Run Code Online (Sandbox Code Playgroud)
从中您可以获得标题和缩略图URL信息,然后可以将其显示给最终用户.这是一种通用的方法,能够处理大多数在线链接.维护您支持的链接类型目录,例如:
application/atom+xml
application/rss+xml
application/json+oembed
application/json+oembed
...
Run Code Online (Sandbox Code Playgroud)
并检查页面上的任何链接是否与您支持的类型相匹配.如果是,请按照该链接获取所需信息.了解type属性可以为您提供有关预先解析的格式的信息.