我正在使用https://github.com/karthikram/rDrop提供的rDrop
包,经过一些调整(因为所有功能都没有像你期望的那样完全正常工作)我得到了它最终以我想要的方式工作,但是一旦你每次获得令牌,它仍然需要授权验证以允许使用应用程序,因为我认为令牌会随着时间的推移而过期...(如果这不是我可以在我的令牌中硬编码,请告诉我,因为这也是一个很好的解决方案......)
基本上我想要一种近乎无缝的方式从R中的命令行从我的Dropbox文件夹中下载一行代码中的csv文件,这样我就不需要在令牌请求后点击允许按钮。
这可能吗?
这是我用来包装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
}
哦,如果它不明显,我把我的Dropbox密钥和秘密放在我的.Rprofile文件中,这就是getOption部分所指的。
提前感谢您提供的任何帮助。 (对于奖励积分......如果有人知道如何摆脱所有加载消息,即使安装会很棒......)
答案 0 :(得分: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。