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 を記録し、ここに入力してください:」というプロンプトが表示された後、Rstudio にコピー/貼り付けする PIN が表示されます。
上記の行を実行した後、次のような呼び出しを に送信していますfilterStream
:
filterStream(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 に接続する必要があります。どんなヒントでも大歓迎です!