2015-01-29 7 views
12

मैं ट्विटर पर आइटम पोस्ट करने के लिए आर पैकेज twitteR का उपयोग कर रहा हूं। मैंने सब कुछ एक समारोह के अंदर रखा और यह ठीक काम करता है। हालांकि, मैं प्रतिक्रिया के लिए संकेत दिए बिना फ़ंक्शन को चलाने के लिए चाहता हूं, और मुझे यह नहीं पता कि यह कैसे किया जाए। कोई सुझाव?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: 

मैं एक स्क्रिप्ट में इस जानकारी को सीधे प्रदान कर सकते हैं setup_twitter_oauth() फ़ंक्शन एक समारोह के बाहर है जब, बहुत पसंद ReadLine जैसे अन्य उपयोगकर्ता इनपुट कार्यों के लिए किया जा सकता है, निम्न पंक्ति में मेरी प्रतिक्रिया दर्ज करके () या स्कैन()।

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> 
    } 
+0

आपका प्रश्न मेरी मदद समाप्त हो गया। चूंकि मैं सिर्फ एक समारोह के बाहर चयन (1) पास करना चाहता था। धन्यवाद! –

+0

मुझे भाग के साथ अपने कोड का प्रयास करने में त्रुटि नहीं मिली। आप क्या सुझाव देते हैं कि मैं इसे बदलूं? –

+0

'' वास्तविक आर कोड नहीं है, यह इंगित करने का मेरा शॉर्टेंड तरीका है कि मेरी स्क्रिप्ट में मैंने स्पष्टता के लिए कुछ अन्य कोड (प्रश्न से प्रासंगिक नहीं) को हटा दिया है। –

उत्तर

11

आप सही पर httr_oauth_cache विकल्प सेट करने की कोशिश कर सकते हैं:

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. 
-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 डाल दिया, क्योंकि मैं विषय के बारे में बहुत ज्यादा पता नहीं है काम करेंगे, लेकिन यह हालांकि मदद कर सकता है।

+0

मुझे यकीन नहीं है कि आप '

+0

फ़ंक्शन के बाहर '1' या तो काम नहीं करता था। –

+2

शायद इसे एक उत्तर के रूप में पोस्ट करने से पहले अपने समाधान का परीक्षण करने का एक अच्छा विचार है, खासकर यदि आप "विषय के बारे में ज्यादा नहीं जानते" ... – nrussell

0

: कि पैकेज वे कैशिंग के बारे में सुझाव देने के लिए,

options(httr_oauth_cache=T) 

ट्विटर पैकेज httr पैकेज का उपयोग करता Token मैनुअल पृष्ठ पर यह पूरी तरह से ठीक काम करता है।

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) 
संबंधित मुद्दे