옵션 twitteR로 자동 httr 인증, "일괄 처리"모드로 대화 형 프롬프트에 대한 응답 제공




mssql bcp 사용법 (3)

이것은 완벽하게 작동합니다.

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)

트위터에 항목을 게시하려면 R 패키지 twitteR을 사용하고 있습니다. 나는 모든 것을 함수 안에 넣고 잘 동작한다. 그러나, 나는 응답을 요구하지 않고 기능을 실행하고 싶습니다, 그리고 어떻게 해야할지 알지 못했습니다. 어떤 제안?

여기 내 기능의 뼈가 있습니다 :

doit <- function(<snip>) {
    <snip>
    # connect to Twitter
    setup_twitter_oauth(api_key, api_secret, access_token, access_token_secret)
    <snip>
    }

명령 줄에서 함수를 실행하면 대화 형 응답을 요구합니다.

[1] "Using direct authentication"
Use a local file to cache OAuth access credentials between R sessions?
1: Yes
2: No

Selection: 

readline () 또는 scan ()과 같은 다른 사용자 입력 함수에 대해 수행 할 수있는 것처럼 다음 줄에 내 응답을 입력하여 setup_twitter_oauth () 함수가 함수 외부에있을 때이 정보를 스크립트에 직접 제공 할 수 있습니다.

setup_twitter_oauth(api_key, api_secret, access_token, access_token_secret)
1

그러나 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>
    }

Answer #1

나는 그것에 대해 많이 모른다.

하지만 일괄 처리를한다면 어쩌면 이것을 시도해보십시오.

doit <- function(<snip>) {
    <snip>
    # connect to Twitter
    setup_twitter_oauth(api_key, api_secret, access_token, access_token_secret)
    < echo 1
    <snip>
}

또한 함수 밖에서 1 게시하여 동일한 결과를 얻었습니까?

그리고 아마 당신이 snip 아래에 1 넣으면 그것은 작동합니다

이것들은 단지 제안에 불과합니다. 왜냐하면 나는 그 주제에 관해서 많이 알지 못하기 때문에 도움이 될 수 있습니다.


Answer #2

httr_oauth_cache 옵션을 TRUE로 설정할 수 있습니다.

options(httr_oauth_cache=T)

twitteR 패키지는 httr 패키지를 사용하며, 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.