2

我看过很多关于此类错误的帖子,但似乎没有任何我能找到的适用于我的案例。

这是我从 Facebook 得到的错误:

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

这是我设置的网站网址: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 天,并试图找到解决方案。在此先感谢您的帮助。

更新:在等待答案以帮助解决问题时,我尝试添加omniauth-google-oauth2,因为通过google+进行身份验证也是该项目计划的一部分。看来我从谷歌得到了同样的错误:

"error" : "redirect_uri_mismatch"

我认为这表明我这边存在一些问题,但我不知道它可能是什么。另一个奇怪的事情是 Twitter 仍然可以正常工作。

4

2 回答 2

2

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

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

你可以在这里看到讨论

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

于 2015-10-26T15:45:16.283 回答
0

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

您可以使用 localtunnel http://localtunnel.me/之类的解决方案进行开发或尝试使用 localhost,我认为 localhost 过去可以工作,尽管我现在不确定。

于 2015-10-25T20:33:29.057 回答