如何正确使用/配置YT gem?

时间:2016-11-29 11:22:58

标签: ruby-on-rails-4 youtube rubygems youtube-api

我正在尝试重现本教程:YouTube API, Version 3 on Rails  为了将它应用于我自己的项目。但是几天之后我就一直很努力。

起初,我遇到了这个错误:

  

对YouTube API的请求导致意外的服务器错误:要显示   更详细的错误,更改Yt的配置:Yt.configure   do | config | config.log_level =:debug end

我更新了RVM和Ruby,现在我收到了这个错误:

  

Yt :: Errors ::禁止在VideosController中创建对YouTube的请求   服务器认为API被禁止:显示更详细   错误,更改Yt的配置:Yt.configure do | config |   config.log_level =:debug end

我已经:

  • 获取ruby和rvm更新
  • 尝试了不同版本的yt gem
  • 尝试过:OpenSSL :: SSL :: VERIFY_PEER = OpenSSL :: SSL :: VERIFY_NONE
  • 试过:config.force_ssl = false

curl -X GET -H“content-length:0”-H“user-agent:Yt :: Request(gzip)” - H“host:www.googleapis.com”“https://www.googleapis.com/youtube/v3/videos?id=wuZfOIWwM_Y&part=snippet”< / p>

返回:

curl result

使用Rails 4.2.4,Ruby 2.3.0; 源代码位于:https://github.com/NeimadTL/YT_Sample_App

任何帮助,建议都将得到强烈和真诚的赞赏。

1 个答案:

答案 0 :(得分:0)

  

forbidden(403)禁止禁止访问。该请求可能未得到适当授权。

答案:您正在提出的请求未获得授权。更新:将key =更改为access_token =

可能的原因:

https://www.youtube.com/annotations_invideo?key=

您正在尝试运行请求annotations_invideo我实际上找不到文档中的任何内容)并且您正在应用API密钥。 API密钥仅适用于公共数据。 annotations_invideo不是对API的有效请求,也不是您需要进行身份验证的请求。如果您需要进行身份验证,则需要访问令牌,然后应用access_token=代替key=

你究竟在哪里找到annotations_invideo?

更新

幸运的是,自从您发布我的问题后,我已经不到一个小时了

https://www.youtube.com/annotations_invideo?access_token=AIzaSyBSvIOM0EGX1tcrf5IAlYJuH_ttqVgTO4Q&video_id=BPNYv0vd78A

并将其转储到Web浏览器中,并返回数据。

<document>
<annotations>
<annotation author="" id="annotation_1585555999" log_data="ei=B2k9WIOCB8X0dNKokKAG&a-id=annotation_1585555999&xble=1&a-type=4&a-v=BPNYv0vd78A" style="title" type="text">
<TEXT>Hello, world!</TEXT>
<segment>
<movingRegion type="rect">
<rectRegion d="0" h="25.2779998779" t="0:00.000" w="75.0" x="13.1540002823" y="67.3239974976"/>
<rectRegion d="0" h="25.2779998779" t="0:02.089" w="75.0" x="13.1540002823" y="67.3239974976"/>
</movingRegion>
</segment>
<appearance bgAlpha="0.25" bgColor="0" borderAlpha="0.10000000149" effects="" fgColor="16777215" fontWeight="bold" highlightFontColor="16777215" textSize="21.6642"/>
</annotation>
<annotation id="channel:563d3ce4-0000-20cc-8fd5-001a11463304" style="playlist" type="promotion" log_data="ei=B2k9WIOCB8X0dNKokKAG&a-type=12&a-ch=UCwCnUcLcb9-eSrHa_RQGkQQ&xble=1&a-id=563d3ce4-0000-20cc-8fd5-001a11463304&l-class=2&link-id=PLuW4g7xujBWfU26JUTW1DGs3hk4LD5KaL&a-v=BPNYv0vd78A">
<data>
{"playlist_length":"200","session_data":{"itct":"CAIQwTcY____________ASITCMOh497wzdACFUU6HQodUhQEZCj4HTICaXZIwN_33vSX1vkE","annotation_id":"563d3ce4-0000-20cc-8fd5-001a11463304","feature":"iv","ei":"B2k9WIOCB8X0dNKokKAG","src_vid":"BPNYv0vd78A"},"is_mobile":false,"text_line_2":"Adorable Kids","text_line_1":"Check this playlist","image_url":"https:\/\/i.ytimg.com\/vi\/yDrLVqRHAsw\/mqdefault.jpg","start_ms":1000,"collapse_delay_ms":86400000,"end_ms":3000}
</data>
<segment/>
<action trigger="click" type="openUrl">
<url type="hyperlink" target="new" value="https://www.youtube.com/watch?v=yDrLVqRHAsw&list=PLuW4g7xujBWfU26JUTW1DGs3hk4LD5KaL"/>
</action>
</annotation>
</annotations>
</document>

注意:我想知道为什么这会返回XML而不是Json,我认为这是一个较旧的api。发现您使用的是YouTube API v2,deprecated应该已关闭。

https://youtube-eng.googleblog.com/2014/09/have-you-migrated-to-data-api-v3-yet.html

你应该删除它并转到YouTube API v3