Ruby on rails 未定义的局部变量';刷新令牌';

Ruby on rails 未定义的局部变量';刷新令牌';,ruby-on-rails,ruby,api,oauth-2.0,calendar,Ruby On Rails,Ruby,Api,Oauth 2.0,Calendar,我正在尝试在OAuth2中获取我的访问令牌,以便访问Google日历API。无论我看到哪里,它都说我应该传入一个“grant\u type”,它等于刷新\u令牌,但我不断得到错误 “未定义的局部变量或#的方法'refresh_token'是指?real_csrf_token” 因此,我的“刷新令牌”在某个地方没有设置。请 事件\u控制器.rb auth = Signet::OAuth2::Client.new( access_type: 'offline', token_credent

我正在尝试在OAuth2中获取我的访问令牌,以便访问Google日历API。无论我看到哪里,它都说我应该传入一个“grant\u type”,它等于刷新\u令牌,但我不断得到错误

“未定义的局部变量或#的方法'refresh_token'是指?real_csrf_token”

因此,我的“刷新令牌”在某个地方没有设置。请

事件\u控制器.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!
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    
此外,我还有一个omniauth初始值设定项文件,我认为我错过了获取访问令牌和刷新令牌的机会

config/initializers/omniauth.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!
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    

感谢您的帮助

文档告诉您传递一种授权类型的
“刷新令牌”
。这是一个字符串。

但是当我将其设置为字符串时,我得到了错误:“授权失败。服务器消息:{”错误“:“无效的请求”,“错误描述”:“缺少必需的参数:授予类型”}”您只发布了来自
事件\u控制器的两行内容。在第一行中,使用了
刷新\u标记,但未定义。您在哪里定义了
refresh\u token
如何将其传递给控制器中的方法?顺便问一下:你遵循什么文档?