3

我正在使用https://github.com/karthikram/rDroprDrop提供的包,经过一些调整(因为所有功能都不像你一直期望的那样工作)我得到了它最终以我想要的方式工作,但它仍然需要授权验证以允许使用该应用程序,一旦你每次获得令牌,因为我认为令牌会随着时间的推移而过期......(如果不是这种情况并且我可以在我的令牌中进行硬编码,请告诉我,这也是一个很好的解决方案......)

基本上,我想要一种近乎无缝的方式,从 R 中的命令行在一行代码中从我的保管箱文件夹下载 csv 文件,这样我就不需要在令牌请求后单击允许按钮。

这可能吗?

这是我用来包装保管箱 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 文件中,这就是 getOption 部分所指的内容。

提前感谢您提供的任何帮助。(对于奖励积分......如果有人知道如何摆脱所有加载消息,即使安装会很棒......)

4

1 回答 1

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 网络面板撤销。

供将来使用:

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

如果您有其他问题,请提出问题

于 2012-09-13T23:45:27.003 回答