2022年07月15日
川俣晶の縁側ソフトウェア技術雑記 total 3266 count

ネイティブアプリからTwitterの複数アカウントに投稿するアプリを作る際の認証

Written By: 川俣 晶連絡先

テーマ §

Twitterのbotを作るとします。

複数のアカウントへの自動投稿を行いたいとします。

認証は最初の1回だけであとは自動化したいと思います。

前提 §

Twitterの開発者アカウントAと、そうではないアカウントBがあるとします。

どちらにも自動投稿したいと思います。

アクセス情報の収集手順 §

  1. Twitterの開発者アカウントAで、API KeyとAPI Key Secretを取得します。
  2. 初期設定では、Readしか許可されていないので、OAuthの設定でWriteも許可します。
  3. tw-oob-oauth-cliをダウンロードします。64bit Windowsならtw-oob-oauth.windows_amd64をダウン路ロードし、拡張子をexeに変更します (ここ重要)
  4. WebブラウザでアカウントAにログインします
  5. コマンドプロンプトでtw-oob-oauth.exe --key [アカウントAのAPI Key] --secret [アカウントAのAPI Key Secret]を実行します
  6. 画面に表示されたURIにアクセスして番号をコピーします
  7. コマンドプロプトに戻って張り付けてEnterを押します。
  8. アカウントAのAccess TokenとToken Secretが表示されるので記録します
  9. WebブラウザでアカウントBにログインします
  10. コマンドプロンプトでtw-oob-oauth.exe --key [アカウントAのAPI Key] --secret [アカウントAのAPI Key Secret]を実行します
  11. 画面に表示されたURIにアクセスして番号をコピーします
  12. コマンドプロプトに戻って張り付けてEnterを押します。
  13. アカウントBのAccess TokenとToken Secretが表示されるので記録します

アクセス方法 §

 4情報があれば、TweetinviAPIを使っているならこんな感じでつぶやけるようになります。

var userClient = new TwitterClient(consumerKey, consumerSecret, accessToken, accessTokenSecret);

var tweet = await userClient.Tweets.PublishTweetAsync(targetLine);

 このとき、TwitterClientクラスのコンストラクタの引数は最初の2つはアカウントAのものを使います。残りの2つは投稿したいアカウントのものを使います。アカウントBに投稿する場合は、開発者アカウントのアカウントAの情報とアカウントBの情報の双方が必要なので注意して下さい。(ここ重要!)

感想 §

 tw-oob-oauth.windows_amd64をダウンロードしてから拡張子を変えねばならないところと、TwitterClientクラスのコンストラクタの引数に別々のアカウントの情報が必要とされるのが罠でした。

参考 §

 実際に動いたコード(github)

参考 §