テーマ §
Twitterのbotを作るとします。
複数のアカウントへの自動投稿を行いたいとします。
認証は最初の1回だけであとは自動化したいと思います。
前提 §
Twitterの開発者アカウントAと、そうではないアカウントBがあるとします。
どちらにも自動投稿したいと思います。
アクセス情報の収集手順 §
- Twitterの開発者アカウントAで、API KeyとAPI Key Secretを取得します。
- 初期設定では、Readしか許可されていないので、OAuthの設定でWriteも許可します。
- tw-oob-oauth-cliをダウンロードします。64bit Windowsならtw-oob-oauth.windows_amd64をダウン路ロードし、拡張子をexeに変更します (ここ重要)
- WebブラウザでアカウントAにログインします
- コマンドプロンプトでtw-oob-oauth.exe --key [アカウントAのAPI Key] --secret [アカウントAのAPI Key Secret]を実行します
- 画面に表示されたURIにアクセスして番号をコピーします
- コマンドプロプトに戻って張り付けてEnterを押します。
- アカウントAのAccess TokenとToken Secretが表示されるので記録します
- WebブラウザでアカウントBにログインします
- コマンドプロンプトでtw-oob-oauth.exe --key [アカウントAのAPI Key] --secret [アカウントAのAPI Key Secret]を実行します
- 画面に表示されたURIにアクセスして番号をコピーします
- コマンドプロプトに戻って張り付けてEnterを押します。
- アカウント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)
参考 §