通过twitteR进行自动httr身份验证,在;批次;模式

通过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_

我正在使用R包twitteR将项目发布到twitteR。我把所有的东西都放在一个函数中,它工作得很好。但是,我希望在不提示响应的情况下运行该函数,而且我还不知道如何执行该操作。有什么建议吗

以下是我的基本职能:

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)