Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4.0用户身份验证与Desive+;Omniauth_Ruby On Rails_Ruby_Devise_Omniauth_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails 4.0用户身份验证与Desive+;Omniauth

Ruby on rails Rails 4.0用户身份验证与Desive+;Omniauth,ruby-on-rails,ruby,devise,omniauth,ruby-on-rails-4,Ruby On Rails,Ruby,Devise,Omniauth,Ruby On Rails 4,我知道我还没有建立Facebook(这似乎是一个类似但不同的野兽),但就目前而言,根据我的理解,我应该能够使用我的Twitter用户名登录,它会说“你登录了!”并在上面显示我的用户名 <span>Logged in as <%= current_user.username %>.</span> 以用户身份登录。 另外,我想知道为什么flash.notice对我不起作用。这是Rails 4中不推荐使用的,还是我在application.html.erb文件中

我知道我还没有建立Facebook(这似乎是一个类似但不同的野兽),但就目前而言,根据我的理解,我应该能够使用我的Twitter用户名登录,它会说“你登录了!”并在上面显示我的用户名

<span>Logged in as <%= current_user.username %>.</span>
以用户身份登录。
另外,我想知道为什么
flash.notice
对我不起作用。这是Rails 4中不推荐使用的,还是我在application.html.erb文件中遗漏了一些东西供他们显示

我的工作地点是:

这是我目前正在使用的代码

编辑:好的,对不起,我说的不是很具体,我想我的文字墙会收到较少的回复,所以我缩短了它

本质上,我正试图与铁路公司合作,让Desive与Omniauth合作。在过去,我让Omniauth和Desive独立工作,将它们结合在一起是一个全新的挑战——考虑到每一个教程都告诉我以不同的方式来做,而且它们似乎都过时了。 我设置它的方式是RailsCast建议的方式——添加OmniAuthCallbacks控制器,但这似乎没有任何作用。 当我尝试使用我的应用程序登录Twitter时,它只会将我带回登录页面,然而,当我尝试使用电子邮件地址登录时,它会起作用并将我带到我创建的“仪表板”。出于某种原因,Twitter登录不起作用,我也希望能够使用flash[:notice]进行测试,但出于某种原因,这也不起作用。 我也想让Facebook登录工作,并有一个用户能够合并他们的帐户与Twitter或Facebook


如果你需要我更详细地解释,我也可以试着解释。谢谢

在config/initializers/designe.rb中,您没有更改配置

config.authentication_keys = [ :email ]
这意味着默认情况下它使用电子邮件进行身份验证。因此,您缺少的代码正在保存用户的电子邮件,或者验证失败

您可以更改身份验证密钥或保存电子邮件

编辑

在我克隆应用程序并在我的机器上运行后,确定。我肯定是因为电子邮件验证失败了。因为在使用designe generator创建迁移文件时,默认情况下designe validate email必须存在

t.string :email,              :null => false, :default => ""
因此,您可以回滚以将此迁移更改为远程:null=>false。之后,将此代码添加到用户模型:

def email_required?
  false
end
不要忘记更改配置以获得正确的身份验证密钥

config.case_insensitive_keys = [ :username ]
config.strip_whitespace_keys = [ :username ]

我们需要更多的细节。请注意,我们不是您,我们不了解您的项目。请描述上下文,你需要什么,你期望发生什么,以及正在发生什么。不确定这里的问题是什么,你需要更加明确。不管怎么说,我刚刚检查了你的代码,结果错了。该代码应该包含在用户模型类中。检查。我编辑了描述,希望它更容易理解,我的错。我现在就看那个教程。我试着取消注释,但没用。看起来它走对了路!请改为尝试config.authentication\u keys=[:username]。更改设置后是否重新启动了应用程序?是的,更改后我重新启动了应用程序。哇,成功了!非常感谢你!这一定是Desive中的更新,因为教程中根本没有提到它。这是大多数Rails教程中我不喜欢的一件事:有时他们会说“它只是工作!”而不解释它是如何工作或为什么工作的,但故障排除确实让我思考得更多。