プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

C#でTwitterにつぶやく

このページを参考にC#からTwitterにつぶやいてみたいと思います。
blog.clock-up.jp

パッケージマネージャーコンソールから、ライブラリを導入します。
パッケージマネージャーコンソールは下の図のように開きます。
f:id:s51517765:20170507134201j:plain
すると、↓のようなコンソールが開くので、
f:id:s51517765:20170507134301j:plain

Install-Package CoreTweet

と入力します。

次にAPIキーを入手します。
twiiterアカウントに電話番号の登録が必要になります。
apps.twitter.com

ライブラリの登録をして、

using CoreTweet;
using System.Diagnostics;

ボタンクリックイベントを作ります。
最終的にはPincode入力用のFormを作りますが、今は簡易的にMessageBoxを出して、
その間に、Twiiterの認証画面を通過して、直接プログラムを書き換えてPincodeを通しています。
なんか、あらかじめブラウザでTwiiterにLogInしていないと、通らない???

 private void button1_Click(object sender, EventArgs e)
        {
            var session = OAuth.Authorize("*********", "*********");
                          //("入手した api_key", "入手した api_secret");
            Process.Start(session.AuthorizeUri.AbsoluteUri);

            MessageBoxShow("Get Pincode.");  //ここでPincodeの入力待ち

            var pincode"123234545676";   //ここを書き換える

            //トークン取得
            var tokens = OAuth.GetTokens(session, pincode);

            try
            {
                tokens.Statuses.Update(status => "hogehoge");
            }
            catch 
            {
                MessageBox.Show("Error");
            }

        }

で、APIは通ったようでプログラムはErrorがないのにタイムラインにつぶやきが更新されないのはなぜ???

<5/9更新>
APIAccess LevelがReadになっていて、Write権限がなかったため、書き込みができなかったらしい。
Read and writeに設定したはずだが、画面上ではRead and writeと出ていても、Read Onlyになっていることがあるようだ。
一度 Read, Write and Access direct messagesに変更して保存し、Read and writeに戻したら有効になった。
f:id:s51517765:20170509213451j:plain
<5/25更新>
APIが通っても一度しかTweetが成功しないことが続いた。数時間経過後に再びTweetができるのだが、どうやら同じ内容を連続してTweetしようとすると、Twitter側から弾かれるらしい。