这个错误通常是因为在使用Devise和google_oauth2时,没有正确设置路由或控制器。
以下是一个可能的解决方案:
首先,确保在config/routes.rb
文件中正确设置了Devise的路由。示例代码如下:
Rails.application.routes.draw do
# 其他路由...
devise_for :users, controllers: { omniauth_callbacks: 'users/omniauth_callbacks' }
end
接下来,确保创建了一个名为Users::OmniauthCallbacksController
的控制器,并将其放在app/controllers/users/omniauth_callbacks_controller.rb
路径下。示例代码如下:
class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
def google_oauth2
# 处理Google OAuth2回调的代码
end
end
请注意,根据您的需求,您可能需要在google_oauth2
方法中添加自己的逻辑来处理Google OAuth2回调。
最后,确保您已在config/initializers/devise.rb
文件中正确配置了Google OAuth2的相关设置。示例代码如下:
config.omniauth :google_oauth2, 'YOUR_GOOGLE_CLIENT_ID', 'YOUR_GOOGLE_CLIENT_SECRET', scope: 'email'
请将YOUR_GOOGLE_CLIENT_ID
和YOUR_GOOGLE_CLIENT_SECRET
替换为您在Google开发者控制台创建的应用程序的客户端ID和客户端密钥。
完成上述步骤后,重新启动服务器并尝试进行Google OAuth2登录,应该不再出现上述错误。
希望这可以帮助到您!
上一篇:ActionController::RoutingError (未初始化的常量ApplicationController):
下一篇:ActionController::RoutingError (无法匹配路由 [GET] "/serviceworker.js"):