我正在使用omniauth-google-oauth2 gem授权谷歌账户,并获得授权代码,但即使在将gem升级到最新版本之后,也可以将request.env'omniauth.auth'作为0。
ruby_version: 2.4.9
rails _version: 4.2.8我的Gemfile
gem 'omniauth', '1.9.1'
gem 'omniauth-oauth2', '1.7.0'
gem 'omniauth-google-oauth2', '0.8.0'omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, 'MY_GOOGLE_CLIENT_ID', 'MY_GOOGLE_SECRET', {
scope: 'email, profile',
access_type: "offline",
approval_prompt: "force",
prompt: 'select_account',
redirect_uri: 'http://localhost:3000/auth/google-oauth2/callback'
}结束
routes.rb
get 'auth/google_oauth2/callback', to: 'social_accounts#create_account'socual_accounts_controller.rb
class Api::V1::SocialAccountsController < ApplicationController
def create_account
request_params = request.env["omniauth.auth"] # gives nil
end
end是否有可能从授权代码中获取access_token和refresh_token?这也会有很大帮助
提前感谢
发布于 2022-08-31 22:08:49
我最近在我们的一个应用程序中遇到了这个问题,所以对于后代来说,…
检查oauth2在您的Gemfile.lock中的版本。在bundle update期间,我们的更新从1.4.10更新到2.0.5。我们尝试升级到最新版本(v2.0.7),并在2上降级到第一个标记(v2.0.0),但没有成功。
oauth2 将锁定到1.4.10,解决了request.env["omniauth.auth"] to nil的问题。
有一个很多变化进入了2.0.0,所以很难说是哪一个打破了这一点。
https://stackoverflow.com/questions/63738217
复制相似问题