2011-09-01 65 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