【问题标题】:How to properly configure YT gem? Yt::Errors::Forbidden如何正确配置 YT gem? Yt::Errors::Forbidden
【发布时间】:2017-11-27 14:06:16
【问题描述】:

我正在尝试使用 yt gem 访问 youtube API,但我遇到了问题。 我添加了宝石:gem 'yt', '~> 0.28.0'

在 application.rb 中添加配置

    Yt.configure do |config|
  config.client_id = '263440616399-n3ksvskq6oo843sgg0uddq14isvkon8m.apps.googleusercontent.com'
  config.client_secret = 't3lHoxu5YgwwD0pyYZXfUPMw'
  config.api_key = 'AIzaSyCvrisogh8SG-zKizLQxiCeUv403jOdov0'
end

我正在 Rails 控制台上尝试这条线:

account = Yt::Account.new access_token: 'ya29.GlsRBTrtujRlfReAsdIy6kNRE4ypzq2CTmGrz2vcvlrbNavef0qffPp0piara1X7aXcjZv2F79lBLO_D7DRoW0gnvqK0yTM8UOQC7pyaTyjoYaLBmTeUmIbm8xsOAgm'

它正在返回帐户对象:

#<Yt::Models::Account:0x000000046aabe0 @access_token="ya29.GlsRBTrtujRlfReAsdIvcy6kNRE4ypzq2CTmGrz2lrbNavef0qEyPp0piara1X7aXcjZv2F79lBLO_D7DRoW0gnvqK0yTM8UOQC7pyaTyjoYaLBmTeUmIbm8xsOAgm", @refresh_token=nil, @device_code=nil, @expires_at=nil, @authorization_code=nil, @redirect_uri=nil, @force=nil, @scopes=nil, @authentication=nil>

之后,我尝试访问 account.email 但出现错误:

Yt::Errors::Forbidden: {"request_curl":"curl -X GET -H \"content-length: 0\" -H \"user-agent: Yt::Request (gzip)\" -H \"authorization: Bearer ya29.GlsRBTrtujRlfReAsdIy6kNRE4ypzqvc2CTmGrz2lrbNavef0qEyPp0piara1X7aXcjZv2F79lBLO_D7DRoW0gnvqK0yTM8UOQC7pyaTyjoYaLBmTeUmIbm8xsOAgm\" -H \"host: www.googleapis.com\" \"https://www.googleapis.com/oauth2/v2/userinfo?key=AIzaSyCvriso2u8SG-zKizLQxiCeUv403jOdov0\"","response_body":{"error":{"errors":[{"domain":"global","reason":"insufficientPermissions","message":"Insufficient Permission"}],"code":403,"message":"Insufficient Permission"}}}

使用 Rails 4.2.8、Ruby 2.2.2

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

【问题讨论】:

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


    【解决方案1】:

    当您在检索访问令牌时没有请求您需要的范围时,将返回权限不足错误。您需要请求以下两个范围才能获得您需要的信息

    https://www.googleapis.com/auth/youtube

    https://www.googleapis.com/auth/plus.login

    使用 yt gem,您可以从您的 Web 应用程序向下面生成的 URL 发出请求:

    account = Yt::Account.new(scopes: ["https://www.googleapis.com/auth/youtube, https://www.googleapis.com/auth/plus.login"], redirect_uri: 'YOUR REDIRECT URL').authentication_url
    

    使用重定向 URL 请求中收到的 code 参数来验证和初始化帐户:

    account = Yt::Account.new authorization_code: 'code', redirect_uri:redirect_uri
    
    account.email #=> (retrieves the account’s e-mail address)
    

    您甚至可以通过在第 1 步中指定上述范围来尝试在 OAuth 2.0 Playground 上进行的 API 调用:

    https://developers.google.com/oauthplayground/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2021-07-24
      • 2015-03-24
      相关资源
      最近更新 更多