2013-04-17 14 views
2

我正在嘗試使用R進行身份驗證,但我無法獲取PIN。使用ROAuth在Twitter上進行身份驗證時不生成PIN

我的代碼如下:

download.file(url="http://curl.haxx.se/ca/cacert.pem", destfile="cacert.pem") 

reqURL <- "http://api.twitter.com/oauth/request_token" 
accessURL <- "http://api.twitter.com/oauth/access_token" 
authURL <- "http://api.twitter.com/oauth/authorize" 
consumerKey <- "foo" 
consumerSecret <- "bar" 
twitCred <- OAuthFactory$new(consumerKey=consumerKey, 
          consumerSecret=consumerSecret, 
          requestURL=reqURL, 
          accessURL=accessURL, 
          authURL=authURL 
          ) 
twitCred$handshake(cainfo="cacert.pem", ssl.verifypeer=FALSE) 

然而,當我得到授權網址,並輸入在,我還沒有得到一個PIN:我只是有一個按鈕授權應用程序,然後我回到我之前指定的返回URL。

這似乎是一個非常類似於這個問題的情況 Where does twitteR PIN code appear during R oauth authentication?但在那裏的補救措施(以確保請求,訪問和身份驗證網址都是http而不是https)不適用於我。

我在Windows 7上運行R 3.0.0,ROAuth是0.9.2,twitteR 1.1.0 - 這些都說明了爲什麼會出現這個問題?

+0

也許您需要更新您的cacert.pem文件。看看[** here **](http://stackoverflow.com/a/15348927/1478381),看看這是否有幫助。這個問題已經發布了很多次,用*確切的*相同的代碼。當你解決這個問題的時候,你自己用*完全*來回答它會有幫助,因爲目前這個問題每天都會被詢問一次。 –

+0

謝謝西蒙。當我嘗試按照你的建議刷新cacert.pem時,我得到「C:\ Users \ V-JFOR〜1 \ AppData \ Local \ Temp \ Rtmp4Y79aI/cacert.pem'狀態爲309」。我認爲這是因爲curl在我的機器上無法正常工作。最新的cacert.pem應該在哪裏?在R工作目錄? – JamesF

回答

0

授權應用程序授權後,Twitter返回的網址爲「oauth_verifier」。我將此用作R中的PIN。我可以將它複製並粘貼到R中,並在其中詢問PIN。直到我輸入時,R中才出現任何文字。 PIN似乎被接受。我嘗試registerTwitterOAuth(cred)並返回TRUE響應。不過,我仍然無法獲得搜索結果中的任何信息:

download.file(url =「http://curl.haxx.se/ca/cacert.pem」,destfile =「cacert.pem 「) options(RCurlOptions = list(cainfo = system.file(」CurlSSL「,」cacert.pem「,package =」RCurl「)))
r_stats < - searchTwitter(」#Rstats「,n = 100,cainfo = 「cacert.pem」)

[1] 「SSL證書問題,驗證該CA證書是OK詳細信息:\ n錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗」 錯誤twInterfaceObj $ doAPICall( cmd,params,「GET」,...): 錯誤:SSL證書問題,請驗證CA證書是可以的。詳細信息: 錯誤:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:證書驗證失敗

相關問題