我试图在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
感谢任何帮助!
答案 0 :(得分:1)
文档告诉您传递'refresh_token'
的grant_type。那是一个字符串。