Rails 中 omniauth-facebook 的验证错误

Verification Error with omniauth-facebook in Rails

我看过很多关于此类错误的帖子,但似乎没有一个适合我的情况。

这是我从 Facebook 返回的错误:

Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request

这是我设置的网站URL:http://landmark.dev/

这是我定义的重定向 URI:http://landmark.dev/auth/facebook/callback

这是我的omniauth.rb(已清理)

OmniAuth.config.full_host = "http://landmark.dev"

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, 'xxx', 'xxx'
  provider :facebook, 'xxx', 'xxx', :scope => 'email'
end

OmniAuth.config.on_failure do |env|
  [200, {}, [env['omniauth.error'].inspect]]
end

这是我的 routes.rb 回调:

match 'auth/:provider/callback', to: 'sessions#create', via: :all

Twitter 很好用,顺便说一句 - 只是 facebook 无法连接。我已经为此奋斗了 3 天,并试图找到解决方案。预先感谢您的帮助。

更新: 在等待对此问题的回答以帮助解决问题时,我尝试通过 [=39= 添加 omniauth-google-oauth2 作为身份验证]+ 也是该项目计划的一部分。看来我从 Google:

得到了同样的错误
"error" : "redirect_uri_mismatch"

我认为这表明我这边有问题,但我不知道它可能是什么。另一件奇怪的事情是 Twitter 仍然运行良好。

如果您在本地机器上尝试此操作(我猜您这样做是因为我认为此时 .dev 域不可用,您应该使用像 POW 这样的服务器)。问题是 Facebook 无法访问您的机器。

您可以将 localtunnel http://localtunnel.me/ 之类的解决方案用于开发目的或尝试使用 localhost,我认为 localhost 过去有效,但我现在不确定。

在 omniauth-oauth2 的最后更新中引入了一个错误 gem。 Dowgrande 你的 gem 版本,它应该可以工作一段时间。

gem 'omniauth-oauth2', '~> 1.3.1'

你可以在这里看到讨论

https://github.com/intridea/omniauth-oauth2/issues/81