首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确配置YT gem?Yt::Errors::已禁用

如何正确配置YT gem?Yt::Errors::已禁用
EN

Stack Overflow用户
提问于 2017-11-27 22:06:17
回答 1查看 359关注 0票数 0

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

在application.rb中添加了配置

代码语言:javascript
复制
    Yt.configure do |config|
  config.client_id = '263440616399-n3ksvskq6oo843sgg0uddq14isvkon8m.apps.googleusercontent.com'
  config.client_secret = 't3lHoxu5YgwwD0pyYZXfUPMw'
  config.api_key = 'AIzaSyCvrisogh8SG-zKizLQxiCeUv403jOdov0'
end

我在rails控制台上尝试了这一行:

代码语言:javascript
复制
account = Yt::Account.new access_token: 'ya29.GlsRBTrtujRlfReAsdIy6kNRE4ypzq2CTmGrz2vcvlrbNavef0qffPp0piara1X7aXcjZv2F79lBLO_D7DRoW0gnvqK0yTM8UOQC7pyaTyjoYaLBmTeUmIbm8xsOAgm'

它正在返回Account对象:

代码语言:javascript
复制
#<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,但得到一个错误:

代码语言:javascript
复制
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

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

EN

回答 1

Stack Overflow用户

发布于 2017-11-28 01:48:28

如果在检索访问令牌时未请求所需的作用域,则会返回权限不足错误。为了获得所需的信息,您需要请求以下两个作用域

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

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

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

代码语言:javascript
复制
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参数对帐户进行身份验证和初始化:

代码语言:javascript
复制
account = Yt::Account.new authorization_code: 'code', redirect_uri:redirect_uri

account.email #=> (retrieves the account’s e-mail address)

甚至您也可以通过在步骤1中指定上面的作用域来尝试在API2.0游乐场上进行的OAuth调用:

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

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

https://stackoverflow.com/questions/47512849

复制
相关文章

相似问题

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