プログラミング素人のArduino

技術屋の末端。プログラミングは専門外。 電気回路も専門外です。 コードに間違いなど見つけられたら、気軽にコメントください。 VC#始めました。

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側から弾かれるらしい。