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

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

Twitterのアクセストークンとは何なのか?

Twitterクライアントアプリを作って公開したい

C#TwitterモジュールであるCoreTweetを例にサンプルコードを示します。

以下がよくあるTokenを取得してTweetするまでのサンプルコードです。
API keyAPI secretAccess tokenAccess token secretTwitter 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 tokenAccess token secretは各ユーザーに取得してもらう必要があります。
buttonAuthをクリックすると、Access tokenAccess 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();
}

ここまででTweetTwitterの権限は取得できますが、このセッションを保存しておけば、アプリを再起動後も有効です。
そこで、認証情報をPropertiesに保存しておきアプリを起動後に読み込みます。

private void buttonTweet_Click(object sender, EventArgs e)
{
    var tokens = Tokens.Create(API_Key, API_Secret, A_Token, A_TokenSecret);
}

まとめ

TwitterのTokenの使用方法を解説しました。
トークン(token)とは直訳すると「証拠」「しるし」「象徴」などの意味ですが、プログラミングでは「ユーザーのセキュリティ識別情報」です。
API keyAPI secretがアプリの識別情報であるのに対して、Tokenはユーザー側の識別情報ということだと思います。