gpt4 book ai didi

ruby-on-rails - 无法通过 Facebook 进行身份验证

转载 作者:行者123 更新时间:2023-11-30 05:19:49 24 4
gpt4 key购买 nike

我正在按照 Ryan Bate 的说明使用 Omniauth 设置第三方身份验证,只是我尝试使用 Facebook 而不是 Twitter,他在 RailsCast 235 中设置了它。

安装 omniauth-facebook gem 并设置初始化程序后

Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'APP_ID', 'APP_SECRET'

end

我应该能够访问 localhost:3000/auth/facebook 并获得 Facebook 登录名(尽管它最终不会工作,因为我们还没有设置回调 url)但是,当我去到那个网址,我得到这个错误

{
"error": {
"message": "Error validating application.",
"type": "OAuthException",
"code": 101
}
}

并且 url 实际上更改为

https://graph.facebook.com/oauth/authorize?response_type=code&client_id=APP_ID&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fauth%2Ffacebook%2Fcallback&scope=email%2Coffline_access

在我的应用程序上,我设置了 Devise 并按照 Devise wiki 上的说明集成 Facebook 授权 https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

谁能告诉我可能是什么问题?

对错误消息进行 Google 搜索后发现,最近几周有不少人遇到过此问题,但找不到任何人提供解决方案 enter image description here

最佳答案

我搜索了 101,然后偶然发现了 this page .如您所见,该错误代表无效的 API key ,因此我认为问题出在您定义 key 的位置。

你应该在一个单独的文件中设置你的 key 和你的 secret (为了清晰和安全)但要注意 Rails 以字母顺序加载文件所以定义这些常量的文件应该有一个名字在配置 oauth 连接的文件之前出现。在我的例子中,我创建了一个名为 constants.rb 的文件,它位于 devise.rb 之前。另外,请确保将此文件远离源代码管理。您不希望其他人拥有您的 key 和 secret 。

# config/initializers/constants.rb
FACEBOOK_KEY = 'string'
FACEBOOK_SECRET = 'string'

如果您使用的是 devise,则在您的设计文件中配置您的连接;如果您使用的是简单的 omniauth,则在您的 omniauth 文件中配置您的连接:

# config/initializers/devise.rb|omniauth.rb
require 'omniauth-facebook'
config.omniauth :facebook, FACEBOOK_KEY, FACEBOOK_SECRET

现在,有一种更好的方法可以使用 ENV 变量来执行此操作。我推荐 Figaro gem因为它确实简化了配置应用程序。

如果您想将 facebook 对话框页面显示为弹出窗口,您需要使用

config.omniauth :facebook, FACEBOOK_KEY, FACEBOOK_SECRET, :display => 'popup'

并关注this question稍后在路上。

而且,如果您使用的是 Windows,则需要一个证书,这样 SSL 连接才不会失败。 Arcolye阐明了这个问题的解决方案here .

最后,要在本地测试您的登录,您需要做的就是将站点 URL 定义为 http://localhost:3000/。仅此而已。您不必定义 Canvas URL。

关于ruby-on-rails - 无法通过 Facebook 进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9730858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com