使用R的Twitter API进行OAuth身份验证

时间:2014-03-11 05:41:44

标签: r twitter oauth roauth

我正在探索Twitter API。

我正在使用R中的ROAuthtwitteR个包。

我认为事情进展顺利:

To enable the connection, please direct your web browser to: 
https://api.twitter.com/oauth/authorize?oauth_token=XXXXX
When complete, record the PIN given to you and provide it here: XX

到目前为止一切顺利。现在,我准备看到一些Twitter时间表:

> my_tweets <- userTimeline('someTimeline')

不幸的是,我得到了:

Error in InterfaceObj$doAPICall(cmd, params, method, ...) : 
  OAuth authentication is required with Twitter's API v1.1

我一直在研究这意味着什么。我觉得我的OAuth身份验证是合适的。为什么我会收到此错误?

我使用的API版本是否存在问题?

2 个答案:

答案 0 :(得分:2)

您可以按照以下步骤操作:

reqURL <- "https://api.twitter.com/oauth/request_token"
accessURL <- "https://api.twitter.com/oauth/access_token"
authURL <- "https://api.twitter.com/oauth/authorize"
consumerKey <- "Mjn6tdsadsadkasdklad2SV1l"
consumerSecret <- "58Z7Eldsdfaslkf;asldsaoeorjkfksaVCQtvri"
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
                             consumerSecret=consumerSecret,
                             requestURL=reqURL,
                             accessURL=accessURL,
                             authURL=authURL)
twitCred$handshake()

运行此代码后,您将在R控制台消息中看到如下:

To enable the connection, please direct your web browser to: 
https://api.twitter.com/oauth/authorize?oauth_token=scmVODruosvz6Tdsdadadasdsa
When complete, record the PIN given to you and provide it here:

只需将链接粘贴到您的浏览器然后授权应用,最后一个您将获得PIN码,只需将PIN码复制并粘贴到R控制台即可。

registerTwitterOAuth(twitCred)

如果您成功,R控制台将显示TRUE。

user <- getUser("xxx")
userTimeline(user, n=20, maxID=NULL, sinceID=NULL, includeRts=FALSE)

如果还有任何问题,请尝试显示您的软件包版本并更新到上一个版本

sessionInfo()
update.packages("twitteR")

twitteR的最后一个版本是1.1.7 =&gt; http://cran.r-project.org/web/packages/twitteR/index.html

答案 1 :(得分:1)

我看到你成功访问(又名握手)。我假设您的握手代码与下一行类似。

Cred$handshake(cainfo = system.file("CurlSSL", "your_certificate.pem", package = "RCurl") )

然后我假设您使用以下行注册了Twitter OAuth,您说它已成功。

registerTwitterOAuth(Cred)

然后您的 userTimeline 应包含您之前创建的 pem 文件。

my_tweets <- userTimeline('someTimeline', cainfo="your_certificate.pem", n=200)