Rstudio与Twitter握手给出错误:未经授权通过Twitter

时间:2014-02-17 00:36:28

标签: r twitter twitter-oauth rstudio

我正在尝试使用twitteR验证Rstudio到Twittter。

握手后我才出错。

我的代码是:

#install(rcurl, ROAuth, twitteR)
#load(rcurl, ROAuth, 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 <- "key"
consumerSecret <- "secret key"
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()

我得到握手,​​它将我发送到Twitter的auth页面。我授权并获得一个别针。

我在此代码中输入了引脚:

registerTwitterOAuth(pin number here)

然后我返回“错误:未经授权”。

我添加了一个新的Twitter应用程序帐户,并获得了一组不同的客户密钥,但仍然保持不变。

3 个答案:

答案 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的最后一个版本是1.1.7 =&gt; http://cran.r-project.org/web/packages/twitteR/index.html

答案 1 :(得分:2)

按照以下步骤,我的代码在通过网络尝试从每个可能的资源建议后工作!我使用Windows 7,64位和RStudio作为下面的代码

确保您安装了所有合适的套餐 - ROAuth,twitteR,RCurl;通常,CRAN页面上指示的依赖项将指向缺少的包(如果有的话)

全局设置SSL证书,如代码所示;我不是一个专家,为什么这是必需的,但它&gt;帮助我通过使用download.file命令下载cacert.pem文件来获取我的代码确保您的Twitter应用程序具有完全读写访问权限,而不仅仅是默认的只读访问权

与Twitter链接的最终守则

获取合适的图书馆

    library(twitteR)
    library(ROAuth)
    library(RCurl) 

全局设置SSL证书

   options(RCurlOptions = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")))

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

如果您从某处复制了代码,请确保网址是https而不是http

    reqURL <- "https://api.twitter.com/oauth/request_token"
    accessURL <- "https://api.twitter.com/oauth/access_token"
    authURL <- "https://api.twitter.com/oauth/authorize"


    consumerKey <- "====="

    consumerSecret <- "====="


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

    #twitCred <- getTwitterOAuth(consumer_key= consumerKey, consumer_secret=consumerSecret)


    twitCred$handshake()

此时您需要将网址粘贴到浏览器中,该浏览器将使用您的&gt;打开推文页面。应用程序 - 您需要从那里获取PIN并将其粘贴到R控制台

 registerTwitterOAuth(twitCred)

TESTTHE CODE:现在你可以测试代码了

testSearch = searchTwitter("#food", n = 10, cainfo="cacert.pem")
Moditweets <- searchTwitter("#Narendra Modi", n = 100)

答案 2 :(得分:0)

以下为我工作,Windows 8,请注意,身份验证必须在cmd中完成,它不能通过Rstudio IDE进行,您想要将R语言验证为

#Open admin shell: In the Start Search box, type cmd, and then press CTRL+SHIFT+ENTER.
#Goto C:/...R../bin/x64, run ./r.exe

install.packages("twitteR") #Takes some time for mirrors to pop-up
library(twitteR)
library(ROAuth)
library(RCurl)
download.file(url="http://curl.haxx.se/ca/cacert.pem",destfile="cacert.pem")
requestURL <- ...
accessURL <- ...
authURL <- ...
consumerKey <- ...
consumerSecret <- ...
twitCred <- OAuthFactory$new(consumerKey=consumerKey, consumerSecret=consumerSecret,
                             requestURL=requestURL, accessURL=accessURL, authURL=authURL)
twitCred$handshake(cainfo="cacert.pem")
registerTwitterOAuth(twitCred)
save(list="twitCred", file="twitteR_credentials")
## Now to get some tweets, place the files cacert.perm and 

twitteR_credentials from bin folder to the the current working directory of Rstudio
library (twitteR)
load("twitteR_credentials")
registerTwitterOAuth(twitCred)
searchTwitter('#Obama', cainfo="cacert.pem", n=5, locale = 'en')