2012-09-13 126 views
3

我使用的rDrop程序包可從https://github.com/karthikram/rDrop獲得,並經過一些調整(因爲所有功能都不像您期望的那樣工作)我最終以我想要的方式開始工作,但它仍然需要授權驗證才能允許使用該應用程序,一旦您每次獲取該令牌,就像我認爲令牌隨時間過期一樣...(如果此操作是不是這種情況,我可以硬編碼在我的令牌請告訴我,因爲這將是一個很好的解決方案...)rDrop dropbox api未過期令牌/無縫令牌問題

基本上我想要一個接近無縫的方式從命令行下載我的保管箱文件夾中的csv文件R放在一行代碼中,這樣我就不需要在令牌r之後點擊允許按鈕eQUEST的。

這可能嗎?

這是我用來包裝一個Dropbox csv下載的代碼。

db.csv.download <- function(dropbox.path, ...){ 

cKey <- getOption('DropboxKey') 
cSecret <- getOption('DropboxSecret') 
reqURL <- "https://api.dropbox.com/1/oauth/request_token" 
authURL <- "https://www.dropbox.com/1/oauth/authorize" 
accessURL <- "https://api.dropbox.com/1/oauth/access_token/" 

require(devtools) 
install_github("ROAuth", "ropensci") 
install_github("rDrop", "karthikram") 
require(rDrop) 
dropbox_oa <- oauth(cKey, cSecret, reqURL, authURL, accessURL, obj = new("DropboxCredentials")) 
cred <- handshake(dropbox_oa, post = TRUE) 
raw.data <- dropbox_get(cred,dropbox.path) 
data <- read.csv(textConnection(raw.data), ...) 
data 
} 

哦,如果不是很明顯我已經把我的.Rprofile文件我的Dropbox密鑰和密碼,這是什麼getOption部分參照。

在此先感謝您提供的任何幫助。 (加分......如果有人知道如何讓即使是安裝這將是巨大擺脫所有的加載消息...)

+1

值得注意的一件事:Dropbox API訪問令牌不會在很長一段時間內過期,實際上永遠不會過期,所以您可以只訪問一次訪問令牌,並將其存儲並重復使用以用於將來的所有調用。雖然訪問令牌可以通過https://www.dropbox.com/account/applications撤銷。 – Greg

+0

任何想法是什麼時間表出於好奇? –

+0

我是該軟件包的作者。請提出任何問題[這裏](https://github.com/karthikram/rDrop/issues/new)。 @Greg是正確的,令牌永不過期,除非用戶從Dropbox網頁設置中撤銷它。我在自述文件中聲明可以將令牌存儲到磁盤並根據需要加載。 – Maiasaura

回答

1
library(rDrop) 
# my keys are in my .rprofile, otherwise specifiy inline 
db_token <- dropbox_auth() 
# Hit ok to authorize once through the browser and hit enter back at the R prompt. 
save(db_token, file="my_dropbox_token.rdata") 

Dropbox的令牌是不會過期的,並且可以隨時從撤銷Dropbox web panel

以備將來使用:

library(rDrop) 
load('~/Desktop/my_dropbox_token.rdata') 
df <- data.frame(x=1:10, y=rnorm(10)) 
> df 
    x   y 
1 1 -0.6135835 
2 2 0.3624928 
3 3 0.5138807 
4 4 -0.2824156 
5 5 0.9230591 
6 6 0.6759700 
7 7 -1.9744624 
8 8 -1.2061920 
9 9 0.9481213 
10 10 -0.5997218 
dropbox_save(db_token, list(df), file="foo", ext=".rda") 
rm(df) 
df2 <- db.read.csv(db_token, file='foo.rda') 
> df2 
    x   y 
1 1 -0.6135835 
2 2 0.3624928 
3 3 0.5138807 
4 4 -0.2824156 
5 5 0.9230591 
6 6 0.6759700 
7 7 -1.9744624 
8 8 -1.2061920 
9 9 0.9481213 
10 10 -0.5997218 

如果您還有其他問題,請提交一份issue

+0

我樂於接受建議和改進,因此請將這些問題歸檔或提交拉取請求。謝謝。 – Maiasaura