我有 omniauth-google-oath2 gem的问题。
我的代码:
devise.rb
config.omniauth :google_oauth2, 'app_id','secret'
omniauth_callbacks_controller.rb
def google_oauth2
auth = env["omniauth.auth"]
@user = User.find_for_google_oauth2(request.env["omniauth.auth"], current_user)
if @user.persisted?
flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => "Google"
sign_in_and_redirect @user, :event => :authentication
else
session["devise.google_uid"] = request.env["omniauth.auth"]
redirect_to new_user_registration_url
end
end
我还在user.rb模型中提供了 find_for_google_oauth2 的方法。 在我的html.erb中,我写道:
<%= link_to "With Google", user_omniauth_authorize_path(:google_oauth2) %>
最后我有这个错误:没有路由匹配{:controller =&gt;“omniauth_callbacks”,:action =&gt;“passthru”,:provider =&gt;:google_oauth2,:format =&gt; nil}缺少必需的密钥:[:provider]
我的错误在哪里? 谢谢你的任何进展!
答案 0 :(得分:5)
检查用户模型
devise :omniauthable, omniauth_providers: [:google_oauth2]
它可能缺失或错误。
答案 1 :(得分:0)
我解决了我的问题。这是愚蠢的:) 我刚刚重启了我的本地rails服务器,一切正常。