GAS(GoogleAppScript)で複数のTwitterDeveloperアカウントを使うには

スポンサーリンク
プログラミング
スポンサーリンク

どーもー、ゆはです。

先日、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が検索できます。

サービス名を別名で上書きする

以下のコードを追加してサービス名を上書きします。
赤字の部分を適当な文字に変更してください。

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が動きます。

同じ問題で詰まっている人のお役に立てれば幸いです。ではまた〜。

参考にさせていただいたサイト

[GAS] Google Apps Script でTwitter複数アカウントを使い分ける - Qiita
概要こちらの記事([GAS]Google Apps Scriptでツイートを投稿する)で公開されているTwitterライブラリを使う時、複数アカウントを使い分ける方法について情報共有します。こ…
タイトルとURLをコピーしました