未定义的局部变量' refresh_token'

时间:2018-03-10 01:34:51

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

我试图在OAuth2中获取访问令牌,以便我可以访问Google Calendar API。无论我到哪里,它都说我应该通过一个'grant_type'这等于refresh_token但我不断收到错误

"未定义的局部变量或方法`refresh_token'为#你的意思? 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初始化文件,我相信我错过了获取访问令牌和刷新令牌的机会。

配置/初始化/ 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    

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

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