我正在使用一个gem 'omniauth-google-oauth2'
#initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider(:google_oauth2, 'client_id', 'client_secret')
end
然后
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def google_oauth2
@user = User.find_for_google_oauth2(request.env['omniauth.auth'], current_user)
#...
然后我得到了这个
request.env['omniauth.auth'][:credentials]
=> {"token"=> "some token", "expires_at"=>1421821319, "expires"=>true}
我想知道,刷新令牌在哪里?根据文档
access_type:默认为脱机,因此发送刷新令牌 当用户不在浏览器时使用。可以设置为 在线。
但它没有发送,是吗?
我猜你指的是文档的 omniauth-google-oauth2 README。它还说"如果您需要刷新令牌,Google还要求您指定选项提示:"同意",这不是默认值"。因此,请尝试将提示选项传递给提供程序方法。
Rails.application.config.middleware.use OmniAuth::Builder do
provider(:google_oauth2, 'client_id', 'client_secret', { prompt: 'consent' })
end