Twitterクライアントアプリを作って公開したい
C#のTwitterモジュールであるCoreTweetを例にサンプルコードを示します。
以下がよくあるTokenを取得してTweetするまでのサンプルコードです。
API key
、API secret
、Access token
、Access token secret
をTwitter Developersから取得してTokenを生成します。
static void Main(string[] args) { var tokens = CoreTweet.Tokens.Create( "{API key}" , "{API secret}" , "{Access token}" , "{Access token secret}"); var text = "status text"; tokens.Statuses.Update(new { status = text }); }
自分でつくったアプリを自分で使っているときは、これでもいいのですが、アプリをつくって公開して使ってもらいたい、というときはこれではダメなことは一目瞭然です。
このような場合は自分のアカウントとしてTweetがされてしまいます。
アプリを公開するには、ユーザーのアカウントでTweetが出来なければなりません。
Tokenは各ユーザーに取得してもらう必要がある
Access token
、Access token secret
は各ユーザーに取得してもらう必要があります。
buttonAuth
をクリックすると、Access token
、Access token secret
がPropertiesに記録されていなければOAuthのセッションを起動します。
ユーザーにPincodeを取得してもらいTokenを生成します。
private void Form1_Load(object sender, EventArgs e) { //認証情報を読み込み A_Token = Properties.Settings.Default.A_Token; A_TokenSecret = Properties.Settings.Default.A_TokenSecret; } private void buttonAuth_Click(object sender, EventArgs e) { if (A_Token != null) { DialogResult result = MessageBox.Show("アカウントを再登録します", "Authentification", MessageBoxButtons.YesNo); if (result == DialogResult.No) { return; } } pincode = ""; //ここでは入力用のForm2を立ち上げる Form2 form2 = new Form2(this); //インスタンスを作成 form2.Show(); //form2を表示する Application.DoEvents(); var session = OAuth.Authorize(API_Key, API_Secret); System.Diagnostics.Process.Start(session.AuthorizeUri.ToString()); while (pincode == "") { // pincode入力待ち Application.DoEvents(); } var tokens = OAuth.GetTokens(session, pincode); //認証情報を保存 Properties.Settings.Default.A_Token = tokens.AccessToken; Properties.Settings.Default.A_TokenSecret = tokens.AccessTokenSecret; Properties.Settings.Default.Save(); }
ここまででTweet他Twitterの権限は取得できますが、このセッションを保存しておけば、アプリを再起動後も有効です。
そこで、認証情報をPropertiesに保存しておきアプリを起動後に読み込みます。
private void buttonTweet_Click(object sender, EventArgs e) { var tokens = Tokens.Create(API_Key, API_Secret, A_Token, A_TokenSecret); }