我正在尝试使用yt gem来访问youtube API,但我遇到了一个问题。我添加了gem: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'它正在返回Account对象:
#<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
任何帮助和建议都将受到强烈和真诚的感谢。
发布于 2017-11-28 01:48:28
如果在检索访问令牌时未请求所需的作用域,则会返回权限不足错误。为了获得所需的信息,您需要请求以下两个作用域
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中指定上面的作用域来尝试在API2.0游乐场上进行的OAuth调用:
https://stackoverflow.com/questions/47512849
复制相似问题