我使用devise_token_auth gem here通过我的API实现社交登录功能。但是,我也遇到了以下gem控制器的问题here,特别是第14行,在request.env [' omniauth.params']变量中没有内容。
我的客户端应用程序omniauth.rb配置如下:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'CCCCCC', 'CCCCCC', info_fields: 'email,id,name,link, first_name, last_name'
provider :google_oauth2, 'CCCCCCCCC', 'CCCCCCCCCCCCCC', scope: 'email,profile,plus.me', image_aspect_ratio: 'square', image_size: 48, access_type: 'online', name: 'google'
OmniAuth.config.full_host = "http://localhost:3000"
end
(localhost:3000是API URL)
这些是我在Facebook开发人员控制台中的配置:
这些是我的API路线:
namespace :api, defaults: { format: :json } do
scope :v1 do
mount_devise_token_auth_for 'User', at: 'auth'
end
end
,这是服务器命令窗口中的错误输出:
Parameters: {"code"=>"XXXXXXXXX...XXXXXXXXXX", "state"=>"YYYYY...YYYYY", "provider"=>"facebook"}
Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms)
NoMethodError (undefined method `[]' for nil:NilClass):
C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/bundler/gems/devise_token_auth-162967970c95/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb:14:in `redirect_callbacks'
注意:如果我得到"用户"资源来自" api / v1 /"名称范围,错误不一样(如果有人认为这是相关的,我可以更新)
如果有人能够解释我是如何解决这个问题以及为什么我遇到这个问题,我将不胜感激。
我很乐意提供更多相关信息。