我创建了一个使用Twitter Ruby gem的网站。在本地主机上,我可以让Twitter宝石工作正常,但当我将它部署到Heroku时,我无法通过Twitter登录。
Heroku提供有关添加CONSUMER_KEY和CONSUMER SECRET的说明(使用Amazon S3变量)
$ cd myapp
$ heroku config:add S3_KEY=some_key_here S3_SECRET=some_secret_here
我做到了。
然后当我去测试登录时,我会在网址中找到它。这个网址与(在本地主机上)忘记添加CONSUMER_KEY等时相同,所以我认为我没有在Heroku上正确设置CONSUMER_KEY和CONSUMER_SECRET ...
Heroku提供了有关在config / initalizers中设置文件以在运行时读取变量的更多详细信息,但我认为我分叉然后调整的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]:
答案 0 :(得分:1)
这可能是两件事之一。
您的密钥设置不正确,或者Twitter OAuth回调返回的路径不正确(因为它处理不正确)。
最容易检查的是你的Heroku配置:
heroku config --app your_app_name
这应显示CONSUMER_KEY
和CONSUMER_SECRET
(我假设您使用上面的S3_KEY
和S3_SECRET
是占位符)
如果此配置正确,并且它仍然无效,您将需要深入处理返回到您的应用程序的请求。它似乎是应该处理/ auth / twitter,但在这一步中它不正确。