【发布时间】: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