TwitterBotで複数アプリを使いたい!

GAS/TwitterBot
two 3d humans give their hand for handshake
この記事は約5分で読めます。

Twitterの仕様変更により、elevated以上のトークンしかこちらのライブラリは使用できません。

Exception: Request failed for https://api.twitter.com returned code 403. Truncated server response: {“errors”:[{“message”:”You currently have Essential access which includes access to Twitter API v2 endpoints only.

というエラーが出た際は、
https://developer.twitter.com/en/portal/products/elevated
こちらより申請を行なってください

以前、複数アカウントでTwitterBotを運用する記事を投稿しました。

が、以下のようなご要望を頂きました!

1個のConsumer Key使って10個のアカウント登録したら動くと思うのですが
10個のConsumer Keyを使う場合はどうしたらいいでしょうか…??

1つのアプリで処理をまとめてしまうのではなく、投稿BotやフォローBotなど複数のアプリをタスクごとに分けることは管理の面でも良いことです。

そんなわけで対応しようとしたのですが、TwitterWebServiceでは難しいことが分かりました。

そのため今回自作TwitterClientを改良して複数のTwitterアプリを連携できるようにしたので新規記事としてご紹介します。

TwitterBotで複数アプリを使う方法

実装方法

いつもどおりGASでライブラリを導入してください。

1fHCjI78BV3o7nGx2l0lJ7WXM49VFbobGDNdFGqAoVFZyRJ2kepQYzVLd

導入方法については以下と全く同じで大丈夫です。

ただしコードを以下のようにしてください。

今回のポイント

getInstanceに第三引数を追加しました

const client = TwitterClient.getInstance(consumerKey, consumerSecret)
const clientB = TwitterClient.getInstance(consumerKeyB, consumerSecretB, 'B')
const clientC = TwitterClient.getInstance(consumerKeyC, consumerSecretC, 'C')

複数のTwitterアプリを使う上で、consumerKey毎にTwitterClientのインスタンスを作る必要がありましたが、これまでのライブラリだと出来ませんでした。

そのため、第三引数に任意のキーワードを入れることで、Twitterアプリを区別出来るようになりました。

TwitterClient.getInstance を増やせば何個でもTwitterアプリを使えるのでご活用ください。

何かプログラムを動かしたい時は自由にTwitterアプリを選択できます

function exec () {
  client.postTweet('てすと') // clientではツイート
  clientB.findRecentTweet('あああ') // clientBでは検索
  clientC.postRequest('~~~~~~', params) // clientCでは別APIを実行
  // という使い方も出来る
}

先程作ったclientは独立して動かすことが出来ます。

clientで定義したTwitterアプリで投稿、clientBで検索、clientCではもっと違うAPI…ということも可能なので、きっと自由にやりたいことが出来ると思います。

もちろんコピペで同じように動かすことも出来るので思うように使ってください!

authCallbackに修正が必要です

/**
 * authorizeでTwitterでの認証後に実行される処理
 * ※手動で実行はしません
 */
function authCallback (request) {
  const clientList = TwitterClient.getClientList()
  const client = clientList[request.parameter.serviceName]
  return client.authCallback(request)
}

今回の対応で一番工夫が必要だったのが Twitterアプリの認証をどう区別するか でした。

どのTwitterアプリで認証してもこの関数に飛ぶため、認証を行ったTwitterアプリのインスタンスが選ばれるような仕組みになっています。

複数アプリを使用する場合、上記のような書き方にしてほしいです。

ただ、この実装さえしておけばTwitterアプリを何個入れても大丈夫なのでよろしくお願いします!

ご相談随時お受けします

今回の記事をもって、Twitterアプリで出来ることは大体できたんじゃないかなと思ってます。

次回からは別の分野に手を出すことを検討中です(`・ω・´)

が、「TwitterBotでこういうの作りたい場合どうすればいいの?」という疑問は出てくると思います。

そういった時、コメント欄にコメント頂ければアドバイス出来ることもあると思うのでお気軽にご相談ください!

ここまで読んで頂きありがとうございました!

コメント

  1. Beltzさん、Twitterに関する一連の記事、拝見しました。役立つ記事をありがとうございます。

    質問があります。
    「セルフリツイートの自動化」は可能なのでしょうか?
    「毎日、任意の時間(たとえば朝・昼・版の一日3回)に、最新10ツイートを自動でセルフリツイートする」といったことをしたいです。
    もしも可能であれば、記事にしてくださると大変助かります。

    何卒よろしくお願いします。

    • コメントありがとうございます!
      「セルフリツイート自動化」ですがおそらく可能です!
      記事化、少々お待ちください!早ければ今週末に解説します!

  2. 本当ですか!
    楽しみにしております!
    ありがとうございます。

タイトルとURLをコピーしました