Ruby on rails omniauth由于某种奇怪的原因没有注册用户?
您好,我正在尝试使用buffer2通过omniauth创建oauth注册。到目前为止,我遇到的问题是,我被重定向到新的用户注册路径 我确实会被带到buffers网站,在那里我接受应用程序获得权限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_
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]
)