通过twitteR进行自动httr身份验证,在;批次;模式
我正在使用R包twitteR将项目发布到twitteR。我把所有的东西都放在一个函数中,它工作得很好。但是,我希望在不提示响应的情况下运行该函数,而且我还不知道如何执行该操作。有什么建议吗 以下是我的基本职能:通过twitteR进行自动httr身份验证,在;批次;模式,r,twitter-oauth,batch-processing,R,Twitter Oauth,Batch Processing,我正在使用R包twitteR将项目发布到twitteR。我把所有的东西都放在一个函数中,它工作得很好。但是,我希望在不提示响应的情况下运行该函数,而且我还不知道如何执行该操作。有什么建议吗 以下是我的基本职能: doit <- function(<snip>) { <snip> # connect to Twitter setup_twitter_oauth(api_key, api_secret, access_token, access_
doit <- function(<snip>) {
<snip>
# connect to Twitter
setup_twitter_oauth(api_key, api_secret, access_token, access_token_secret)
<snip>
}
当setup_twitter_oauth()函数位于函数外部时,我可以通过在下面的行中输入我的响应,直接在脚本中提供此信息,这与readline()或scan()等其他用户输入函数类似
但是,当setup_twitter_oauth()位于函数内部时,我无法使用这种方法
如果您能给我一些建议,告诉我如何在不需要用户输入的情况下运行它,我将不胜感激
=====
下面的@NicE给出的答案成功了。我将选项设置合并到我的功能中,如下所示:
doit <- function(<snip>) {
<snip>
# connect to Twitter
origop <- options("httr_oauth_cache")
options(httr_oauth_cache=TRUE)
setup_twitter_oauth(api_key, api_secret, access_token, access_token_secret)
options(httr_oauth_cache=origop)
<snip>
}
我对它了解不多 但如果是批量生产,可以尝试以下方法:
doit <- function(<snip>) {
<snip>
# connect to Twitter
setup_twitter_oauth(api_key, api_secret, access_token, access_token_secret)
< echo 1
<snip>
}
doit您可以尝试将httr\u oauth\u cache
选项设置为TRUE:
options(httr_oauth_cache=T)
twitteR软件包使用httr
软件包,在该软件包的Token
手册页面上,他们给出了有关缓存的提示:
OAuth tokens are cached on disk in a file called .httr-oauth
saved in the current working directory. Caching is enabled if:
The session is interactive, and the user agrees to it, OR
The .httr-oauth file is already present, OR
getOption("httr_oauth_cache") is TRUE
You can suppress caching by setting the httr_oauth_cache option to FALSE.
这个很好用
install.packages("twitteR", dependencies = T)
install.packages(c('ROAuth','RCurl'))
install.packages("httr")
library(httr)
require('ROAuth')
require('RCurl')
library(twitteR)
reqURL <- "https://api.twitter.com/oauth/request_token"
accessURL <- "https://api.twitter.com/oauth/access_token"
authURL <- "https://api.twitter.com/oauth/authorize"
consumerKey <- "XXXXXXXXXXXXX"
consumerSecret <- "XXXXXXXXXXXXXXXXXXXXX"
twitCred <- OAuthFactory$new(consumerKey=consumerKey,consumerSecret=consumerSecret,requestURL=reqURL,accessURL=accessURL,authURL=authURL)
download.file(url="https://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem")
twitCred$handshake(cainfo="cacert.pem")
setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret)
install.packages(“twitteR”,dependencies=T)
install.packages(c('ROAuth','RCurl'))
安装程序包(“httr”)
图书馆(httr)
require('ROAuth')
要求('RCurl')
图书馆(推特)
reqURL我不知道你说的
行是什么意思。可能是一个好主意,在将其作为答案发布之前测试您的解决方案,尤其是如果您“对主题了解不多”…@nrussel我只是想帮助您,它可能已经起作用了,但我猜它不是批处理。很抱歉,我在不太了解的情况下试图帮助别人是愚蠢的。这就是评论的目的。@nrussell我还没有足够的声誉发表评论。你的问题最终帮助了我。因为我只是想将选择(1)传递到函数外部。谢谢我在尝试使用部件的代码时没有出错。你建议我用什么替换它?
不是实际的R代码,这只是我的简写方式,表明在我的脚本中,为了清晰起见,我删除了一些其他代码(与问题无关)。
OAuth tokens are cached on disk in a file called .httr-oauth
saved in the current working directory. Caching is enabled if:
The session is interactive, and the user agrees to it, OR
The .httr-oauth file is already present, OR
getOption("httr_oauth_cache") is TRUE
You can suppress caching by setting the httr_oauth_cache option to FALSE.
install.packages("twitteR", dependencies = T)
install.packages(c('ROAuth','RCurl'))
install.packages("httr")
library(httr)
require('ROAuth')
require('RCurl')
library(twitteR)
reqURL <- "https://api.twitter.com/oauth/request_token"
accessURL <- "https://api.twitter.com/oauth/access_token"
authURL <- "https://api.twitter.com/oauth/authorize"
consumerKey <- "XXXXXXXXXXXXX"
consumerSecret <- "XXXXXXXXXXXXXXXXXXXXX"
twitCred <- OAuthFactory$new(consumerKey=consumerKey,consumerSecret=consumerSecret,requestURL=reqURL,accessURL=accessURL,authURL=authURL)
download.file(url="https://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem")
twitCred$handshake(cainfo="cacert.pem")
setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_secret)