荷物持ちでも構わない

文系大学4年生からデータサイエンティストを目指して頑張りつつ、書きたいことを書きたいときに書きたいだけ書く、ルール無用雑記ブログ。

MENU

ツイッターの仕様変更でRによるデータ取得の時にエラーが出るらしい

ツイッターの仕様変更により、Rを使ってツイッターAPIからデータを取得する際にエラーが出ることがあるようだ。

ツイッターを使ったテキストマイニングができなくなってしまう。さあ困った。

 

目次

原因はコールバックURLのホワイトリスト登録必須化

Rでデータを取得する手順などを解説した記事はよそにたくさんあるのでここでは省くが、APIからデータを得るためのアプリを作るときに入力するコールバックURLがツイッターのホワイトリストに入っているものでないといけなくなったんだとか。

より具体的に言うと、「rtweet」パッケージの「create_token()」関数を使うとエラーが出てしまうらしい。

f:id:messyer813:20180705021232p:plain

このように、「Error in init_oauth1.0(self$endpoint, self$app, permission = self$params$permission, : Forbidden (HTTP 403).」とエラーが出てしまう。

access_tokenとaccess_secretで解決可能?

で、いろいろ調べてみたところ、githubにこんな投稿があった。

f:id:messyer813:20180705021333p:plain

出典:https://github.com/mkearney/rtweet/issues/251

要約すると、「create_token()関数に、consumer_keyとconsumer_secretだけじゃなく、access_tokenとaccess_secretも追加する」ことで解決できると書いてある。

実際に試してみる。

f:id:messyer813:20180705022305p:plain

残念ながら、「Error in create_token(app = APPNAME, consumer_key = CONSUMERKEY, consumer_secret = CONSUMERSECRET, : unused arguments (access_token = ACCESSTOKEN, access_secret = ACCESSSECRET)」という違うエラーが返ってきてしまった。

create_token()関数はaccess_tokenとaccess_secretの入力を受け付けていない様子。

バージョンの問題なのか、原因はよくわかりませんが、githubにも同じエラーが出たという報告が上がっていたので、僕だけの問題ではないようだ。

一番簡単な解決法は「rtweet」ではなく「twitteR」を使うこと

いろいろ調べてみた結果、一番簡単な解決法は、RでツイッターAPIからデータを取得する際に使うパッケージとして、「rtweet」ではなく「twitteR」を使うことらしい。

twitteRのsetup_twitter_oauth()関数であれば、問題なくデータを取得することができる。

f:id:messyer813:20180705022931p:plain

データさえ取得してしまえばあとは自由に分析するだけなので、とりあえずこの方法でいいんじゃないだろうか。

同じエラーで困っている人はたくさん見かける割に解決策がなかなか見つからなかったので記事にまとめてみた。

(RでツイッターAPIを使う需要がそもそも少ないのかもしれないが)お役に立てればと思います。