【问题标题】:OmniAuth + Devise - Facebook provider - OAuthException 191OmniAuth + 设计 - Facebook 提供商 - OAuthException 191
【发布时间】:2012-11-09 01:52:05
【问题描述】:

问题

我收到以下错误:

"error": {
      "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.",
      "type": "OAuthException",
      "code": 191
   }

这是众所周知的,我找到了许多不同的解决方案来解决它,不幸的是它们中的任何一个都对我有用。

我正在尝试使其在localhost:3000 本地运行,但无法使其工作。

我的配置是普通配置:

config/initializers/devise.rb

config.omniauth :facebook, '396783260390829', 'a504939e60c3410ed1becc44f41d4b94', {client_options: {ssl: {ca_file: Rails.root.join('lib/assets/cacert.pem').to_s}}}

Facebook 配置:

Routes.rb

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

devise_scope :user do
  get '/users/auth/:provider' => 'users/omniauth_callbacks#passthru'
end

我已经尝试了以下方法:

方法一:

OmniAuth.config.full_host = '`http://localhost:3000/`'

这是我得到的最接近的,因为它将我重定向回来,但地址是http://localhost:3000//users/auth/facebook/callbacks?xxx

我已经尝试不使用最后一个斜线 OmniAuth.config.full_host = 'http://localhost:3000',但后来我得到了 191。

方法 2

普通初始化器,没有 hack。

方法 3

在 Facebook 配置页面中设置域。

方法 4

App Domains 设置为 localhost

方法 5

将 Facebook 配置中的网站设置为 http://localhost:3000/users/auth/facebook

方法 6

尝试使用我的 ip 地址而不是 localhost 并得到相同的错误,但在 OmniauthCallbacksControllerfailure 中没有 p,但在 graph.facebook.com/oauth/authorize?

redirect_uri=http://localhost:3000/users/auth/facebook/callback

所有方法的结果

在所有情况下,我得到的内联解释除外

OAuthException 191

在我创建的用于处理回调的 OmniauthCallbackController 的失败方法中。

如果您知道其他替代方法或希望看到其他任何可以帮助我的东西,请随时提问或回答。


【问题讨论】:

  • 您必须遵循一些非常古老的教程,因为带有设计的omniauth 配置是以完全不同的方式完成的。看看这个项目的 wiki,如果你按照它来做,你就会完成工作。 github.com/plataformatec/devise/wiki/OmniAuth%3A-Overview
  • 实际上我的配置完全来自您链接的 wiki,唯一的区别是我用来忽略 ssl 的 OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
  • 但是你有一个omniauth.rb 文件!那没有出现在那个 wiki 上,你不应该需要它。
  • 如果您想发布作为答案,我会接受。谢谢,成功了。
  • 解决方案应该作为答案发布,而不是作为问题的一部分。您可以发布自己问题的答案并接受它们。

标签: facebook ruby-on-rails-3 devise omniauth


【解决方案1】:

Facebook 不允许重定向地址为 localhost。您必须使用真实 IP 地址或命名地址。 查看类似问题的答案:Facebook app - login through omniauth - OAuthException 191

【讨论】:

  • 这不是真的,可能在旧版本的 Facebook api 中!
【解决方案2】:

解决方案

正如@Ashitaka 所说,我必须删除旧的和已弃用的omniauth.rb,所以我的最终和工作配置如下:

config/initializers/devise.rb

为了进行身份验证,我将 cacert 复制到我的资产中并在 devise.rb 中引用

config.omniauth :facebook, 'xxxxxxxxxxxxxxx', 'a504xxxe60cxxxxed1bexxxxf41d4b94', {client_options: {ssl: {ca_file: Rails.root.join('lib/assets/cacert.pem').to_s}}}

Facebook 配置:

![在此处输入图片描述][1]

链接到 Facebook 身份验证

/users/auth/facebook

感谢您的帮助,这个问题花了我 5 个小时才解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 2012-03-05
    • 2013-04-08
    • 2016-06-10
    • 1970-01-01
    • 2015-08-27
    • 2012-03-11
    • 2022-12-14
    相关资源
    最近更新 更多