1

我正在尝试使用 streamR 和所需的 ROAuth 包连接到 Twitter 的流 API。我遵循此处文档中的确切过程,但是当我完成所有步骤且没有错误时,我在调用filterStream或时收到 401 Unauthorized 错误sampleStream

以下是似乎可以正常工作的步骤:

library(ROAuth)
library(streamR)

requestURL <- "https://api.twitter.com/oauth/request_token"
accessURL <- "https://api.twitter.com/oauth/access_token"
authURL <- "https://api.twitter.com/oauth/authorize"
consumerKey <- "--redacted--"
consumerSecret <- "--redacted--"

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

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

当我运行最后一行时,会打开一个浏览器窗口,要求我授权该应用程序使用我的 Twitter 帐户。当我点击授权 PIN 出现时,我在提示阅读“完成后,记录给您的 PIN 并在此处提供:”后复制/粘贴到 Rstudio 中:

运行上述行后,我将这样的呼叫发送到filterStreamfilterStream(file.name = "test_tweets.json", track = c("sat"), timeout = 120, oauth = my_oauth)

生成的文件 test_tweets.json 内容如下:Problem accessing '/1.1/statuses/filter.json'. Reason: Unauthorized

为了解决这个问题,我尝试创建一个新的 twitter 应用程序,更新 R 和所有包。这些行动都没有产生任何不同的结果。此外,我在包中尝试了相同的凭据twitteR,效果很好,但不幸的是,我需要连接到twitteR包中无法使用的流 api。非常感谢任何提示!

请注意,这个问题与这个未回答的问题有关,但又有所不同。

4

2 回答 2

0

无论出于何种原因,创建一个新的 Twitter 帐户解决了这个问题;但只有在我将手机与帐户相关联并选中移动通知部分中的所有框之后。奇怪,但它奏效了。在我让它工作后,我能够取消选中通知,它仍然有效。

你,读者,神秘错误接收者,并不孤单:http: //xkcd.com/979/

于 2015-03-02T00:45:11.227 回答
0

当您将 twitter 权限从 Read - Write 更改为 Read-Write 和 Direct Messages 时,您需要重新生成 customerKey 和 customerSecret。

于 2016-06-09T10:10:28.747 回答