2013-11-15 21 views
1

看來我必須在這裏丟失一些東西。我工作的一個簡單的應用程序,我開始的Dropbox的教程:用於Ruby的Dropbox SDK,不需要重新授權

# Install this the SDK with "gem install dropbox-sdk" 
require 'dropbox_sdk' 

# Get your app key and secret from the Dropbox developer website 
APP_KEY  = 'XXXXXXXXXXXXXXX' 
APP_SECRET = 'XXXXXXXXXXXXXXX' 
CODE  = 'QEL2VDUKRj4AAAAAAAAAAcBT_U9GoEvKF2UCXp3h4UA' 

flow = DropboxOAuth2FlowNoRedirect.new(APP_KEY, APP_SECRET) 
puts flow.start() 
access_token, user_id = flow.finish(CODE) 

client = DropboxClient.new(access_token) 

file = open('working-draft.txt') 
response = client.put_file('/magnum-opus.txt', file) 
puts "uploaded:", response.inspect 

的代碼似乎只爲一個請求(或腳本的至少一個運行)工作,然後我得到一個錯誤:

E:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/dropbox-sdk-1.6.2/lib/dropbox_sdk.rb:69:in `parse_response': invalid_grant (DropboxError) 

爲了在沒有授權的情況下正常工作,我需要做些什麼?

回答

2

只需將訪問令牌存儲在某個地方並儘可能多地重複使用它即可。

要手動試試這個,只是打印出來的access_token值,然後修改代碼以只是:

access_token = '<value from previous run>' 
client = DropboxClient.new(access_token) 
+0

我只是應該跳過流完全不是嗎?我認爲這是我的錯誤。我正在存儲令牌,但每次都運行DropboxOAuth2FlowNoRedirect.new行,並且這必須是要求我重新授權的內容。 –

+0

是的,就像我上面的代碼一樣,完全跳過這個流程。它看起來像存儲授權碼,但您需要存儲訪問令牌(從flow.finish返回的第一件事)。 – smarx

+0

謝謝,Dropbox網站上的教程並沒有完全說明這一點...... –