どーもー、ゆはです。
先日、TwitterBotを作成しました。
スプラトゥーンの動画投稿でいいねが多いものを1時間おきにツイートするBOTです。
最近、フォートナイトにもハマっているので、同じようなBOTを作成しようとしたのですが、別のTwitterDeveloperアカウントを使うところでハマってしまいました。
解決方法を残しておこうと思います。
動かなったBOT
作ったBOTは以下です。
- 1時間に1回「#fortnite」のツイートを検索
- もっとも「いいね」が多いツイートをリツイート
作り方は以下記事と同じ方法で作成しました。
ほぼコピペで同じもの作れるからめちゃ楽ちんじゃん。
と思いつつ作っていたのですが、OAuth認証のところで問題発生。。。
「authorize」を実行するとすでに認証済みとのこと、「reset」で認証解除するとうまく動くのですが、スプラトゥーンBOTのほうも認証解除されて使えなくなってしまいました。。
どうやら、このやり方だと、1つのGASだと1つのTwitterDeveloperアカウントしかOAuth認証ができない模様。「スプラトゥーンBOT」を認証すると「フォートナイトBOT」が使えず、、「フォートナイトBOT」を認証すると「スプラトゥーンBOT」が使えない事態に陥ってしまいました。
解決した方法
どうやらOAuthのサービス名がデフォルトだと「Twitter」になっているようで、この名前が重複していることが原因のようでした。
GAS上でOAuthライブラリをインストールしてサービス名を変更することでうまく動きました。
具体的にやった内容はこちらです。
GASにOAuth1ライブラリを追加
ライブラリ追加をします。
「1CXDCY5sqT9ph64fFwSzVtXnbjpSfWdRymafDrtIZ7Z_hwysTY7IIhi7s」で検索することでOAuth1が検索できます。
![](https://yuhabeem.com/wp-content/uploads/2023/01/スクリーンショット-2023-01-01-21.02.56.png)
サービス名を別名で上書きする
以下のコードを追加してサービス名を上書きします。
赤字の部分を適当な文字に変更してください。
twitter.getService = function() {
return OAuth1.createService('TwitterFotn')
.setAccessTokenUrl('https://api.twitter.com/oauth/access_token')
.setRequestTokenUrl('https://api.twitter.com/oauth/request_token')
.setAuthorizationUrl('https://api.twitter.com/oauth/authorize')
.setConsumerKey(twitter.consumer_key)
.setConsumerSecret(twitter.consumer_secret)
.setCallbackFunction('authCallback')
.setPropertyStore(PropertiesService.getUserProperties())
}
変更が完了したら、「authorize」を実行するとうまく動きました。
あとは以前の手順と同様で問題なくBOTが動きます。
同じ問題で詰まっている人のお役に立てれば幸いです。ではまた〜。
参考にさせていただいたサイト
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JTVCR0FTJTVEJTIwR29vZ2xlJTIwQXBwcyUyMFNjcmlwdCUyMCVFMyU4MSVBN1R3aXR0ZXIlRTglQTQlODclRTYlOTUlQjAlRTMlODIlQTIlRTMlODIlQUIlRTMlODIlQTYlRTMlODMlQjMlRTMlODMlODglRTMlODIlOTIlRTQlQkQlQkYlRTMlODElODQlRTUlODglODYlRTMlODElOTElRTMlODIlOEImdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWVlYjkyNzE0MTg4MjAxOTYzOWY0NmNhZWZjZjMzNzVl&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa29iYTAxMjQmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTg4N2Y2YmUxZDg1MjMyZmQ1NjliZjYzZTRjNjViMGI1&blend-x=142&blend-y=491&blend-mode=normal&s=eed9292643763fff390e58ea0cf130b4)