Ruby on rails 未定义的局部变量';刷新令牌';
我正在尝试在OAuth2中获取我的访问令牌,以便访问Google日历API。无论我看到哪里,它都说我应该传入一个“grant\u type”,它等于刷新\u令牌,但我不断得到错误 “未定义的局部变量或#的方法'refresh_token'是指?real_csrf_token” 因此,我的“刷新令牌”在某个地方没有设置。请 事件\u控制器.rbRuby 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
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
如何将其传递给控制器中的方法?顺便问一下:你遵循什么文档?