【问题标题】:undefined local variable 'refresh_token'未定义的局部变量'refresh_token'
【发布时间】:2018-08-18 15:47:05
【问题描述】:

我正在尝试在 OAuth2 中获取我的访问令牌,以便我可以访问 Google 日历 API。我到处都说我应该传入一个等于 refresh_token 的“grant_type”,但我一直收到错误

“未定义的局部变量或方法 `refresh_token' for # 你的意思是?real_csrf_token”

所以我的'refresh_token'没有被设置。请

events_controller.rb

auth = Signet::OAuth2::Client.new(
  access_type: 'offline',
   token_credential_uri: 'https://accounts.google.com/o/oauth2/token',
   client_id:            ENV['GOOGLE_CLIENT_ID'],
   client_secret:        ENV['GOOGLE_SECRET_KEY'],
   grant_type:           refresh_token


 )

 auth.fetch_access_token!

另外,我有一个omniauth 初始化文件,我认为我错过了获取访问令牌和刷新令牌的机会。

config/initializers/omniauth.rb

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_SECRET_KEY'],


  {
    scope: ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/plus.login'],
    skip_jwt: true
  }


end    

感谢任何帮助!

【问题讨论】:

  • 您在events_controller 中仅发布了两行。在第一行中使用了refresh_token,但未定义。你在哪里定义了refresh_token你如何将它传递给控制器​​中的方法?顺便说一句:你遵循什么文档?

标签: ruby-on-rails ruby api oauth-2.0 calendar


【解决方案1】:

文档告诉您传递'refresh_token' 的grant_type。那是一个字符串。

【讨论】:

  • 但是当我把它变成一个字符串时,我得到了错误:“授权失败。服务器消息:{“error”:“invalid_request”,“error_description”:“缺少必需的参数:grant_type”} "
猜你喜欢
  • 1970-01-01
  • 2012-03-29
  • 2013-04-29
  • 2013-04-24
  • 1970-01-01
  • 1970-01-01
  • 2019-10-01
  • 2016-01-10
  • 1970-01-01
相关资源
最近更新 更多