【问题标题】:How to properly use/configure YT gem?如何正确使用/配置 YT gem?
【发布时间】:2016-11-29 11:22:58
【问题描述】:

我正在尝试复制本教程:YouTube API, Version 3 on Rails 为了将它应用到我自己的项目中。但是从这几天开始我就很难受。

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

对 YouTube API 的请求导致意外的服务器错误:显示 更详细的错误,更改 Yt 的配置:Yt.configure 做 |配置| config.log_level = :调试结束

我更新了 RVM 和 Ruby,但现在出现了这个错误:

Yt::Errors::Forbidden in VideosController#create 对 YouTube 的请求 API 被服务器认为是禁止的:显示更详细 错误,更改 Yt 的配置: Yt.configure do |config| config.log_level = :调试结束

我已经:

  • 更新 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"

返回:

使用 Rails 4.2.4、Ruby 2.3.0; 源码在:https://github.com/NeimadTL/YT_Sample_App

任何帮助和建议都将受到强烈而真诚的感谢。

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

    • curl 命令曾一度是错误消息中的建议。这个 gem 是根据教程 (sitepoint.com/youtube-api-version-3-rails) 专门为处理 YouTube API V3 而创建的。感谢您的帮助。我会尝试与此 gem 的作者取得联系。
    • 我用 YT API V3 的 curl 结果更新了我的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多