2011-09-01 39 views
0

(这不是了解OAuth而是存储密钥和值)的Heroku和编写OAuth凭证

我写了一个简单的应用程序,查询我的Twitter帐户,然后从我的时间线处理的tweet。

我能够获得我的oauth标记和秘密,但事实证明,我不能将它们存储在heroku的文件系统上,原因不明。

基本上我有以下代码:

task :heroku => :environment do 
    desc "manually store the keys for heroku in oauth_path" 
    File.open(oauth_path, 'w') do |f| 
     f.puts ENV['token'] 
     f.puts ENV['secret'] 
    end 

    puts "Token and Secrent written to #{oauth_path}" 
    end 

这个工程对本地文件系统,但不是在Heroku。

我有一个任务,然后打开oauth_path,然后运行与这些令牌和秘密的Twitter应用程序。

我已经建立了在Heroku cron来执行rake myapp:pull

任何想法如何,我可以存储密钥值,然后写我的应用程序作为rake myapp:pull

+0

我不认为你可以在Heroku上编写文件:http://devcenter.heroku.com/articles/read-only-filesystem你需要使用某种类型的数据库或其他远程存储。 – Thilo

+0

哦,我明白了。我需要的只是存储oauth-token和oauth-secret,这两者都可能随时间而改变。任何简单的解决方案,你可以想到? – disappearedng

+0

将它们存储在数据库中会更好。 (连接到外部存储将是一个矫枉过正的,如S3 ...) – PeterWong

回答

2

您应该在heroku上设置一个变量来存储这些信息,它不应该存储在数据库中,因为这可能不太安全。

您可以设置按键这样的:

$ cd myapp 
$ heroku config:add S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190 
Adding config vars: 
    S3_KEY => 8N029N81 
    S3_SECRET => 9s83109d3+583493190 
Restarting app...done. 

和访问他们像这样:

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

documentation for more info

+0

太棒了!正是我需要的。我怎样才能在开发中测试这个。 – disappearedng