最新的 omniauth-facebook gem 破坏设计

问题描述

红宝石'2.6.3' gem 'rails','~> 6.0.2','>= 6.0.2.1'

我正在使用最新的 omniauth-facebook 并一起设计 宝石档案: 宝石“设计” gem 'omniauth-facebook'

启动服务器时出现此错误

/versions/2.6.3/lib/ruby/gems/2.6.0/gems/devise-4.7.3/lib/devise/omniauth.rb:12:in `':您使用的是旧的 OmniAuth 版本,请确保您安装了 1.0.0.pr2 版本或更高版本。 (运行时错误

问题是,如果我尝试使用较旧的 omniauth-facebook 版本,服务器可以工作,但 Facebook 身份验证会停止正常工作(例如,尽管失败,但包括电子邮件

范围:'email',info_fields:'email,name'

在 devise.rb 中。 )

我尝试了 omniauth-facebook 和 devise 的许多不同版本组合。 Facebook 身份验证停止正常工作或服务器出现故障(见上文)。

解决方法

使用

gem 'devise',github: 'heartcombo/devise',branch: 'ca-omniauth-2'

在 Gemfile 中将修复问题,等待合并。

根据下面的 Carlos 回答更新了我的回答,当我使用 ref 发布此内容时我很着急。

感谢卡洛斯维护 Devise。

,

这是卡洛斯,设计维护者。请留意上面链接的拉取请求,我只是shared how you can test it in your app there

我建议直接使用分支引用而不是 git 引用:

gem 'devise',branch: 'ca-omniauth-2'

有了它,您应该能够运行 bundle update devise omniauth,它有望为您提供 OmniAuth 2 和这个设计分支。这应该允许应用启动。

最后,如果您复制了应用上的设计共享链接,或者如果您有自己的链接来启动 OmniAuth 身份验证流程,您需要确保将它们更改为使用表单。 (例如,您可以通过将 link_to 与 method: :post 选项一起使用,或者使用 button_to,如果这适用于您的应用程序。)请注意,由于安全性,这是 OmniAuth 工作方式的要求更改问题,read more

如果您遇到任何问题,请在 GitHub 中进行评论,我们将尽快解决这些问题,以便我们可以发布完全支持 OmniAuth 2 的新 Devise 版本。谢谢。

,

Devise 4.8.0(昨天发布)解决了这个问题。

,

请降级 OmniAuth:

gem "omniauth","~> 1.9.1"

这对我有用。

,

我很确定这个问题与这个设计公关有关,https://github.com/heartcombo/devise/pull/5327

Devise 目前有一个不包括 OmaniAuth > 1.x.x 的版本检查