我正在使用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:默认为离线,因此会发送刷新令牌 当用户不在浏览器中时使用。可以设置为 在线。
但它没有被发送,是吗?
答案 0 :(得分:2)
我猜您是指文档中的omniauth-google-oauth2自述文件。它还说“如果你需要一个刷新令牌,谷歌还要求你也指定选项提示:'同意',这不是默认的”。因此,尝试将提示选项传递给提供者方法。
Rails.application.config.middleware.use OmniAuth::Builder do
provider(:google_oauth2, 'client_id', 'client_secret', { prompt: 'consent' })
end