加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 04:22:55 所属栏目:百科 来源:网络整理
导读:我正在按照Ryan Bate的指示使用Omniauth设置第三方身份验证,除了我正在尝试使用Facebook而不是Twitter,他在RailsCast 235中设置了它. 安装omniauth-facebook gem后,设置初始化程序 Rails.application.config.middleware.use OmniAuth::Builder do provider :
我正在按照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登录(尽管它最终不会起作用,因为我们还没有设置回调网址)但是,当我去那个网址时,我收到这个错误

{
   "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

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

对错误消息进行谷歌搜索显示,最近几周有不少人遇到过这个问题,但找不到任何有解决方案的人

解决方法

我搜索了101并且偶然发现了 this page.正如您所看到的,该错误代表无效的API密钥,因此我认为问题出在您定义密钥的位置.

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

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

然后,如果您使用的是devise,请在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_SECRET,:display => 'popup'

然后在this question之后继续前进.

而且,如果您使用的是Windows,则需要证书才能使SSL连接失败. Arcolye here澄清了这个问题的解决方案.

最后,要在本地测试您的登录,您需要做的就是将您的站点URL定义为http:// localhost:3000 /.这就是全部.您不必定义画布URL.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读