twitteR在输入twitter API PIN后抛出Forbidden错误

时间:2014-02-03 10:10:20

标签: r twitter-bootstrap twitter oauth twitter-oauth

我正在尝试使用R和twitteR包来分析一些推文。握手和注册码似乎工作正常,我从R获得授权链接。但是,当我输入从https://api.twitter.com/oauth/authorize获得的PIN时,我得到一个“禁止错误”。任何帮助表示赞赏。

守则:

TwitterOAuth<-function(){
  reqURL <- "https://api.twitter.com/oauth/request_token"
  accessURL <- "http://api.twitter.com/oauth/access_token"
  authURL <- "http://api.twitter.com/oauth/authorize"
  consumerKey <- "xxxxxxxxxxxxxxxx"
  consumerSecret <- "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  twitCred <- OAuthFactory$new(consumerKey=consumerKey,
                             consumerSecret=consumerSecret,
                             requestURL=reqURL,
                             accessURL=accessURL,
                             authURL=authURL)
  options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package =  "RCurl")))
  twitCred$handshake()
  registerTwitterOAuth(twitCred)
}

回应:

  

TwitterOAuth对象()   要启用连接,请将您的网络浏览器指向:   http://api.twitter.com/oauth/authorize?oauth_token=X0AwET4FXBC7YRIWWN3iF61WFNE1DjxbfibqtfFjgcc   
完成后,记录给您的密码并在此处提供:1998913   
错误:禁止

我的sessionInfo()

R版本3.0.2(2013-09-25) 平台:x86_64-w64-mingw32 / x64(64位)

区域设置: [1] LC_COLLATE = Turkish_Turkey.1254 LC_CTYPE = Turkish_Turkey.1254 LC_MONETARY = Turkish_Turkey.1254 [4] LC_NUMERIC = C LC_TIME = Turkish_Turkey.1254

附加基础包: [1] stats graphics grDevices utils数据集方法库

其他附件包: [1] twitteR_1.1.7 rjson_0.2.13 ROAuth_0.9.3 digest_0.6.4 RCurl_1.95-4.1 bitops_1.0-6

通过命名空间加载(而不是附加): [1] tools_3.0.2

5 个答案:

答案 0 :(得分:24)

将您的访问网址从http更改为https。

答案 1 :(得分:7)

您可以按照此步骤操作(请不要忘记,有效网址是使用https):

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)

答案 2 :(得分:3)

基于此博客:http://thinktostart.wordpress.com/2013/05/22/twitter-authentification-with-r/

library(RCurl)
# Set SSL certs globally
options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))

require(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 <- "yourconsumerkey"

consumerSecret <- "yourconsumersecret"

twitCred <- OAuthFactory$new(consumerKey=consumerKey,consumerSecret=consumerSecret,requestURL=reqURL,accessURL=accessURL,authURL=authURL)

twitCred$handshake(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl"))

registerTwitterOAuth(twitCred)

答案 3 :(得分:0)

我有同样的“错误:禁止”响应,并且今天没有解决它(虽然我以前做过)。

我的Windows 8.1系统的R脚本也包含以下行:

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

我在网上发现了这条评论,“这是Windows的必要步骤”

大约三天前,我在输入在线密码后成功访问了Twitter,但今天我不能。

答案 4 :(得分:0)

Cookie可能是问题:我发生了同样的事情,当我在另一个浏览器中关注twitcred$handshake()给出的链接时,这个问题已得到解决;即,我一直在尝试使用Safari,但之后在Chrome中尝试了一次,我在Chrome中收到的PIN在R中没有遇到任何问题。