【问题标题】:Rails/ Heroku: Setting up code to read variables at run timeRails/ Heroku:设置代码以在运行时读取变量
【发布时间】:2012-01-02 19:51:00
【问题描述】:

我创建了一个使用 Twitter Ruby gem 的网站。在本地主机上,我可以让 Twitter gem 正常工作,但是当我将它部署到 Heroku 时,我无法通过 Twitter 登录。

Heroku 提供了有关添加 CONSUMER_KEY 和 CONSUMER SECRET 的说明(使用 Amazon S3 变量)

$ cd myapp
$ heroku config:add S3_KEY=some_key_here S3_SECRET=some_secret_here

我做到了。

然后,当我去测试登录时,我在 url 中得到了这个。此网址与(在本地主机上)我忘记添加 CONSUMER_KEY 等时相同,所以我认为我没有在 Heroku 上正确设置 CONSUMER_KEY 和 CONSUMER_SECRET ......

Heroku 提供了有关在 config/initializers 中设置文件以在运行时读取变量的更多详细信息,但我认为我分叉然后改编的 Github 项目已经设置了 https://github.com/sferik/sign-in-with-twitter/blob/master/config/initializers/omniauth.rb 所以我不确定发生了什么在。

Set up your code to read the vars at runtime in config/initializers/s3.rb:

AWS::S3::Base.establish_connection!(
  :access_key_id     => ENV['S3_KEY'],
  :secret_access_key => ENV['S3_SECRET']
)

更新

当我尝试通过 Twitter 登录时,Heroku 日志中出现错误消息。注意,我可以通过本地主机登录。

2012-01-02T20:01:43+00:00 app[web.1]: 
2012-01-02T20:01:43+00:00 app[web.1]: Started GET "/auth/twitter?utf8=%E2%9C%93" for 64.46.7.250 at 2012-01-02 20:01:43 +0000
2012-01-02T20:01:44+00:00 app[web.1]: 
2012-01-02T20:01:44+00:00 app[web.1]: OAuth::Unauthorized (401 Unauthorized):
2012-01-02T20:01:44+00:00 app[web.1]: 

【问题讨论】:

  • 您可能想更好地隐藏您的密钥和秘密,这很容易阅读。
  • 收到错误页面时 Heroku 日志中的错误消息是什么?
  • @BrandonTilley 我用错误消息更新了 OP。
  • 看看this question 看看是否有帮助(尤其是 Twitter 设置)

标签: ruby-on-rails heroku


【解决方案1】:

这可能是两件事之一。

您的密钥设置不正确,或者 Twitter OAuth 回调返回的路由不正确(因为它没有正确处理)。

最容易检查的是您的 Heroku 配置:

heroku config --app your_app_name

这应该显示CONSUMER_KEYCONSUMER_SECRET(我假设您使用上面的S3_KEYS3_SECRET 是占位符)

如果此配置正确,但仍然无法正常工作,您需要深入研究返回到应用程序的请求的处理过程。它似乎正在处理 /auth/twitter,但在这一步中它不正确。

【讨论】:

  • 非常感谢! CONSUMER_SECRET 末尾缺少一个字母...我从没想过要检查 Heroku 配置...
猜你喜欢
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 2016-02-05
  • 1970-01-01
相关资源
最近更新 更多