如何根据环境设置facebook认证密钥?

2023-12-21

我有一个 Rails 应用程序,它使用omniauth 通过 Facebook 对访问者进行身份验证。

当您向 Facebook 注册应用程序时,您必须注册一个回调 URL,一旦完成身份验证过程,他们将重定向到该回调 URL。

由于我的生产站点托管在与我的开发环境不同的服务器上,因此我需要向 Facebook 注册 2 个不同的 URL。我通过注册两个应用程序(一个实时版本和一个开发版本)来完成此操作。

当然,现在我有两个 app_id 和两个 app_secrets,我的 Rails 应用程序需要使用它们。

如何将 OmniAuth 设置为在开发环境中使用一组密钥,在生产环境中使用另一组密钥?

我尝试在 /config/environments 目录中设置密钥,如下所示:

# development.rb
SampleApp::Application.configure do
  config.omniauth_keys.facebook.app_id = "32423423"
  config.omniauth_keys.facebook.api_key = "324234324234324"
  config.omniauth_keys.facebook.app_secret = "242343424234324324234324"
end

# production.rb
SampleApp::Application.configure do
  config.omniauth_keys.facebook.app_id = "7657566"
  config.omniauth_keys.facebook.api_key = "7756765765756757"
  config.omniauth_keys.facebook.app_secret = "65756767567567567757"
end

然后在 /config/initializers/omniauth.rb 中

Rails.application.config.middleware.use OmniAuth::Builder do 
  keys = SampleApp::Application.config.omniauth_keys

  # ==> OmniAuth Provider Credentials
  #                   APP_ID                SECRET_ID
  provider :facebook, keys.facebook.app_id, keys.facebook.app_secret
end

但我得到

`method_missing': undefined method `omniauth_keys'

当我尝试启动开发服务器时,我猜测是因为omniauth.rb是在/emvironments/*之前加载的?

我该如何设置?

Edit:这是更详细的错误消息

=> Booting WEBrick
=> Rails 3.0.4 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/railtie/configuration.rb:77:in `method_missing': undefined method `omniauth_keys' for #<Rails::Application::Configuration:0xadaa69c> (NoMethodError)
    from /home/david/sites/sample_app/config/environments/development.rb:32:in `block in <top (required)>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application.rb:47:in `class_eval'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application.rb:47:in `configure'
    from /home/david/sites/sample_app/config/environments/development.rb:1:in `<top (required)>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `block in require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application/bootstrap.rb:11:in `block in <module:Bootstrap>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:25:in `instance_exec'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:25:in `run'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:50:in `block in run_initializers'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:49:in `each'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/initializable.rb:49:in `run_initializers'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application.rb:134:in `initialize!'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/application.rb:77:in `method_missing'
    from /home/david/sites/sample_app/config/environment.rb:5:in `<top (required)>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `block in require'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:596:in `new_constants_in'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:225:in `load_dependency'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/activesupport-3.0.4/lib/active_support/dependencies.rb:239:in `require'
    from /home/david/sites/sample_app/config.ru:3:in `block in <main>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/builder.rb:46:in `instance_eval'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/builder.rb:46:in `initialize'
    from /home/david/sites/sample_app/config.ru:1:in `new'
    from /home/david/sites/sample_app/config.ru:1:in `<main>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/builder.rb:35:in `eval'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/builder.rb:35:in `parse_file'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/server.rb:162:in `app'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/server.rb:248:in `wrapped_app'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/rack-1.2.1/lib/rack/server.rb:213:in `start'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands/server.rb:65:in `start'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands.rb:30:in `block in <top (required)>'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands.rb:27:in `tap'
    from /home/david/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands.rb:27:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

在 /config/initializers/omniauth.rb 中

if Rails.env.production?
   # set the app parameter
elsif Rails.env.development?
   # set the app parameter
else  
   # test env
   # set the app parameter
end

注意:Rails.env.生产?是 Rails 3 的一个方法。我认为对于 2.x 版本,您可能必须使用 RAIL[ENV] 或类似的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据环境设置facebook认证密钥? 的相关文章

  • db:schema:load 与 db:migrate 使用 capistrano

    我有一个 Rails 应用程序 我正在将其移动到另一台服务器 我认为我应该使用 db schema load 来创建 mysql 数据库 因为这是推荐的 我的问题是我正在使用 capistrano 进行部署 并且它似乎默认为 rake db
  • 如何执行graph-api Facebook Android SDK来上传照片并标记人物?

    如何执行graph api Facebook Android SDK来上传照片并标记人物 在网络上 对于 Android 版 facebook sdk 有很多混淆 我的第一个方法 Bitmap img bitmap if img null
  • 如何在 Rails 测试中填充查找表

    我在用Cucumber RSpec and 工厂女工用于测试我的 Rails 应用程序 但我有几个查找表 其中大部分包含static数据 所以我试图找出测试时填充这些的最佳方法 单独做它们FactoryGirl看起来很乏味 我想远离固定装置
  • 如何在 Ruby 中创建自定义排序方法

    我想指定一个自定义块方法 通过评估两个属性来对对象数组进行排序 然而 经过多次搜索 我没有找到任何没有的例子 lt gt 操作员 我想比较a to b if a x less than b x return 1 if a x greater
  • 通过 SSL 发布 UTF-8 时,HEROKU 上出现“EOFError:已到达文件结尾”

    我在 heroku 上遇到了奇怪的错误 为了重现它 我必须使用请求正文中的任何 UTF 8 字符制作大的 超过几 KB HTTPS POST 这是一个例子 require net https require uri Accutally I
  • Rails Active Storage - 保留现有文件/上传吗?

    我有一个 Rails 模型 has many attached files 默认情况下 通过 Active Storage 上传时 如果您上传新文件 它会删除所有现有上传内容并将其替换为新文件 我有一个控制器破解 由于多种原因 它不太理想
  • 检索线索广告 Facebook API

    我在检索潜在客户广告时遇到问题 我有广告 ID 和页面 ID 我没有创建它们 但被添加为开发人员 我试图使用 PHP SDK 和这个https developers facebook com docs marketing api guide
  • 将控制器操作处理为 JS 而不是 HTML

    所以我有以下形式 Follow 我试图
  • 为什么 Rails 应用程序在底部显示数据库信息?

    我创建了一个博客 每当我添加帖子时 帖子索引页面底部总会显示数据库中的记录列表 home html erb 像这样
  • 黄瓜与 RSpec

    我想开始深入研究 BDD 我以前从未使用过 TDD 现在 不确定我是否应该从学习 RSpec 开始 然后跳到 Cucumber 或者直接使用 Cucumber 我一直在互联网上阅读有关两者的内容 在我看来 Cucumber 可能是 RSpe
  • 保护 REST 和 JSON

    我想利用 RESTful 架构构建提供 JSON 数据的 Web 服务 但我只想要我自己的客户端应用程序可以从我的网络服务请求 基本上 我的 Web 服务包含不供公众使用的敏感数据 但我想以这种方式构建它 以便我可以构建连接到我的 Web
  • Rails 3 分页,will_paginate 与 Kaminari

    我的设置 Rails 3 0 9 Ruby 1 9 2 我正在为我的应用程序寻找分页解决方案 发现有一个新的宝石Kaminari与值得信赖的人相比will paginate 看起来像will paginate有一段时间没有更新了 但后来又以
  • Rails 4.1 环境变量未重新加载

    我创建了一个application yml文件在配置目录中并添加了一些键值对 即AWS REGION us east 1 我还添加了以下内容application rb读取文件并更新 ENV 哈希 if Rails env developm
  • Rails 如何使用 send_data 导出数据,然后重定向到新页面?

    我有一个 Rails 应用程序 允许用户下载生成的 CSV 文件 下载文件后 我想将用户重定向到新的 URL 或操作 有没有在 send data 之后进行重定向的技巧 我想做这样的事情 这不起作用 send data output typ
  • Rails3/will_paginate/Ajax - 下一个/上一个链接无法正常工作(这是一个错误吗?)

    我正在遵循 使用ajax分页 http railscasts com episodes 174 pagination with ajax railscast 用于我的 Rails 3 应用程序 一切似乎都运行良好 除了上一个和下一个链接根本
  • 请求对话框仅适用于 Canvas-View?

    我有一些粉丝专页的页面选项卡 我想在那里集成 RequestDialog 但不幸的是 它总是尝试将收到请求的朋友重定向到画布页面 有没有办法将用户发送到他的朋友最初启动请求对话框的页面选项卡 提前致谢 尤里克 接受请求将始终转到画布页面re
  • 更改 Active Storage 的默认 URL

    我们可以更改从活动存储创建的默认 永久 url 以重定向到 S3 类似于rails active storage representations 我不喜欢网址中的框架名称 Thanks UPDATE 最近 Rails 6 中增加了一个可配置
  • 如何将 devise/omniauth 重定向到我登录的页面?

    我通过omniauth 进行了身份验证 并且该链接通过layout application html haml 在每个页面上都可用 然而 当他们完成omniauth身份验证后 他们都会进入root权限 我如何设置它 以便他们重定向到他们单击
  • Rails HABTM 设置、模型对象和 join_table 插入控制器设置

    我有以下设置 1 个产品有多个 Product types 许多 Product types 有 1 种类型 根据我对文档的理解 HABTM 关系 我的模型是 class Product lt ApplicationRecord has a
  • 如何使用sunspot_rails gem 搜索相关文章

    我有一个迷你博客应用程序 我希望用户查看与他们在文章显示页面中阅读的内容相关的文章 没有 sunspot rails gem 我会做这样的事情 在我的模型中 def self related search query join AND fi

随机推荐

  • 如何使用 KaTeX 渲染 $..$ 中的所有内联公式?

    所以我想要 KaTeX 内联公式 就像 MathJax 一样 但到目前为止我只发现render 将字符串 绘制 到元素的函数 我需要修改 DOM 中文本节点的一部分 我真的找不到如何用 KaTeX 做到这一点 有这样的功能吗 MathJax
  • 将 media_ids 添加到 Twitter API 调用会导致身份验证问题

    我有一个简单的网页 可以通过 Twitter REST API 创建纯文本推文 https api twitter com 1 1 statuses update json https api twitter com 1 1 statuse
  • 完全卸载 VS Code 扩展

    自最新版本的 VS Code 以来 每当打开 C 文件时都会出现错误 我已经安装了由 OmniSharp 提供支持的 csharp 语言扩展 这是我得到的错误 我尝试卸载扩展并重新安装它 同样的问题 我完全卸载了该应用程序并重新安装了它 但
  • 在 Android 中获取我拨打的号码

    我需要以编程方式从 Android 设备获取正在拨打的号码 我现在正在做的事情如下 我听android intent action PHONE STATE被广播意味着我正在被呼叫或正在呼叫 或接收短信等 In a BroadcastRece
  • XML 和 JSON Web api:从 POJO 自动映射?

    我即将开始一个小项目 其目标是最终得到一个 Web xml json api 我将用 Java 编写它 并使用 Restlet 库 如何处理 xml json 二元性 我知道我可以使用 JAXB 将 pojos 转换 为 xml 并返回 但
  • 在 python 正则表达式中使用 OR 的最佳方法是什么

    我正在做关于正则表达式的作业 并且遇到一些困难OR 给定以下字符串 avc7fsrd5vcc12vfscsrwt1qw7eetrs fsrsy 应该返回 t1 s fdjhads jhf 5672t3zcxvb m654godjhfjdye
  • 无法签入 TFS 并使用持续集成进行构建'

    我昨天将一个 Azure Web 应用程序签入 TFS 没有出现任何问题 签入后 资源管理器将注入我们的 nuget 包 如果构建成功则进行部署 I made a few changes added a class and checked
  • 将示例项目导入到eclipse中

    我知道这可能是一个菜鸟问题 但我以前没有这样做过 如何导入 android 示例项目 例如 https developer android com training location retrieve current html https
  • 将 Uncrustify 与 VIM 结合使用

    在我的 vimrc 中 我通过以下命令调用 Uncrustify uncrustify l CPP c D uncrustify default cfg 之后在一些代码上我收到一个 Windows Fatal 错误 但是当我使用 f 选项在
  • Liquibase 多个变更日志执行

    我在用着SpringLiquibase对于 liquibase 配置 以下配置适用于单个变更日志文件 sql 格式 Configuration Slf4j public class LiquibaseConfiguration Inject
  • 通过 SSIS 上传之前验证数据

    我有一个 SSIS 包 用于将 Excel 文件中的数据上传到 Sql Server 2005 表中 Excel 文件将包含 20k 30k 行范围内的不同行数据 当所有数据正确时 上传工作正常 但当即使在单行中出现小问题时 显然也会失败
  • 将 JavaScript 对象进行 AND 运算

    我在我们的应用程序中遇到了这段代码 已修改 并对它的工作原理感到困惑 function someObject this someProperty this foo bar baz function return Huh this getVa
  • Spark 结构化流 - 由于输入源数量增加而导致检查点中出现断言错误

    我正在尝试将两个流合并为一个并将结果写入一个主题 代码 1 阅读两个主题 val PERSONINFORMATION df DataFrame spark readStream format kafka option kafka boots
  • 提高重叠片段可视化的性能

    我有一组 x 点对 用于沿 x 轴绘制线段 以在 R 中创建自定义读取映射 绘制这些线段的一半任务是确定它们的 y 位置 以便没有两个重叠的线段位于同一 y 水平上 对于每个段 我从第一个位置迭代 y 个级别 直到到达尚未包含与当前段重叠的
  • Angularjs ng-单击重复表行不起作用

    在 AngularJS 中 ng click 以下 HTML 对我不起作用 tr td ai name td td ai desc td tr 我的控制器中的 go 功能目前只有 scope go function hash console
  • 如何使用 sns.boxplot 或 sns.catplot 添加剖面线到箱线图

    I need to add hatches to a categorical box plot What I have is this 我需要的是这样的 带有中线 我尝试过的是这段代码 exercise sns load dataset e
  • 存储库模式与活动记录模式相同吗?

    他们似乎很相似 他们是不同的 活动记录模式定义 An包装数据库中的行的对象表或视图 封装数据访问 并在该数据上添加域逻辑 在存储库模式中全部数据访问放在单独的类中并通过实例方法进行访问 对我来说 这样做是有益的 因为数据访问现在封装在一个单
  • 在哪里存储桌面应用程序的用户数据?

    我正在开发 C NET 桌面应用程序 我希望用户能够创建新的数据库文件 我是桌面应用程序的新手 我真的不知道存储这些文件的最佳位置在哪里 我想将它们存储在我的应用程序文件夹中 但我读到这不是最好的解决方案 我应该将它们存储在 C 中还是有其
  • 需要 XAML 教程 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Silverlight 新手 我需要一个教程来帮助我理解 XAML 样式 资源和对象绑定到 UI
  • 如何根据环境设置facebook认证密钥?

    我有一个 Rails 应用程序 它使用omniauth 通过 Facebook 对访问者进行身份验证 当您向 Facebook 注册应用程序时 您必须注册一个回调 URL 一旦完成身份验证过程 他们将重定向到该回调 URL 由于我的生产站点