簡體   English   中英

最新的 omniauth-facebook gem 破解 devise

[英]Latest omniauth-facebook gem breaks devise

ruby '2.6.3' gem 'rails', '~> 6.0.2', '>= 6.0.2.1'

我一起使用最新的 omniauth-facebook 和 devise Gemfile: gem 'devise' 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 身份驗證將停止正常工作(例如,盡管包括電子郵件在內,但仍然失敗

scope: 'email', info_fields: 'email,name'

在 devise.rb。 )

我已經嘗試了 omniauth-facebook 和 devise 的許多不同版本組合。要么 Facebook 身份驗證停止正常工作,要么服務器出現故障(見上文)。

使用

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

在 Gemfile 中將解決問題,等待合並。

根據下面的 Carlos 回答更新了我的答案,當我使用 ref 發布這個時我很着急。

謝謝 Carlos 維護 Devise。

這是 Carlos,Devise 維護者。 請留意上面鏈接的 Pull Request,我剛剛分享了如何在您的應用程序中測試它

我建議直接使用 branch ref 而不是 git ref:

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

有了它,你應該能夠運行bundle update devise omniauth ,它應該會給你 OmniAuth 2 和這個 Devise 分支。 這應該允許應用程序啟動。

最后,如果您在應用程序上復制了 Devise 共享鏈接,或者如果您有自己的鏈接來啟動 OmniAuth 身份驗證流程,則需要確保將它們更改為使用表單。 (例如,您可以將 link_to 與method: :post選項一起使用,或者使用button_to ,如果這適用於您的應用程序。)請注意,由於安全問題,這是對 OmniAuth 工作方式的要求更改,請閱讀更多

如果您遇到任何問題,請在 GitHub 中回復,我們將盡快解決這些問題,以便我們發布完全支持 OmniAuth 2 的新版本 Devise。謝謝。

Devise 4.8.0(昨天發貨)解決了這個問題。

請降級 OmniAuth:

gem "omniauth", "~> 1.9.1"

這對我有用。

我很確定這個問題與這個 devise PR, https://github.com/heartcombo/devise/pull/5327有關

Devise 當前的版本檢查不包括 OmaniAuth > 1.xx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM