Ruby on rails omniauth由于某种奇怪的原因没有注册用户?

Ruby on rails omniauth由于某种奇怪的原因没有注册用户?,ruby-on-rails,omniauth,Ruby On Rails,Omniauth,您好,我正在尝试使用buffer2通过omniauth创建oauth注册。到目前为止,我遇到的问题是,我被重定向到新的用户注册路径 我确实会被带到buffers网站,在那里我接受应用程序获得权限 omniauth_callbacks_controller.rb class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController def buffer @user = User.find_for_

您好,我正在尝试使用buffer2通过omniauth创建oauth注册。到目前为止,我遇到的问题是,我被重定向到新的用户注册路径

我确实会被带到buffers网站,在那里我接受应用程序获得权限

omniauth_callbacks_controller.rb

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController

def buffer
  @user = User.find_for_buffer(request.env["omniauth.auth"], current_user)

  if @user.persisted?
    flash[:notice] = "devise.omniauth_callbacks.success"
    sign_in_and_redirect @user, :event => :authentication
  else
    session["devise.buffer_data"] = request.env["omniauth.auth"]
    redirect_to new_user_registration_url
  end
 end
end
该站点将我返回到新的用户注册url,控制台显示:

INFO -- omniauth: (buffer) Callback phase initiated.
Processing by Users::OmniauthCallbacksController#buffer as HTML
Parameters: {"state"=>"3ee6956fe2d74bf9a114a29cc55c9c70260aba7f0bd402d9",       "code"=>"1/686ea44403ab403d0c6e647338a936f8"}
User Load (0.7ms)  SELECT  "users".* FROM "users"  WHERE "users"."provider" = 'buffer' AND    "users"."uid" = '526362667f9a1f3f5994515a'  ORDER BY "users"."id" ASC LIMIT 1
(0.2ms)  BEGIN
(0.2ms)  ROLLBACK
Redirected to http://localhost:3000/users/sign_up
Completed 302 Found in 108ms (ActiveRecord: 1.0ms)
我还附上了他们提供的api文档的url,因为我是新手,这对我来说没有什么意义,而且我认为他们的文档也有点糟糕:

默认情况下,使用Desive,您需要向您的
用户提供
电子邮件

您正在请求
data.email
,但一些OAuth提供商的响应中没有en-email,例如。当我查看文档时,您的提供商似乎没有提供电子邮件

尝试手动创建一个提供电子邮件的用户,看看会发生什么:

User.create(
  email: "a-manual-entry@domain.com",
  provider: "a-token",
  uid: "1234567890",
  password:Devise.friendly_token[0,20]
)

从这里开始,您有多种选择,但是。

问题肯定是
@user.persistend?
返回
false
。您可以在控制台中看到
回滚
,这意味着未保存
用户
。您必须通过
用户验证。
验证失败。我尝试为注册许可证、提供商、uid和密码添加designe\u parameter\u消毒剂。还是不行。你知道为什么会这样吗?
User.create(
  email: "a-manual-entry@domain.com",
  provider: "a-token",
  uid: "1234567890",
  password:Devise.friendly_token[0,20]
)