しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

Xamarin.Forms で Twitter に投稿したい

前回の記事 の問題はやっぱり Twitter 側の不具合だったらしく、再度アプリ登録したら普通にうまくいきました

twittercommunity.com

ということで前回やりたかったことの続きです

下記のページの登録したアプリ一覧を開きます

https://apps.twitter.com/app

f:id:matatabi_ux:20150625071151p:plain


その後、対象のアプリページを開いてから「Keys and Access Tokens」のタブを選択して、「Generate My Access Tokens and Token Secret」ボタンを押下し必要なキー情報を生成します

f:id:matatabi_ux:20150625071355p:plain

生成後に表示されたページの 「Consumer Key (API Key) 」、「Consumer Secret (API Secret)」、「Access Token」、「Access Token Secret」は後で利用するのでメモしておきます


さて、ここからはコーディング

Visual Studio で Xamarin.Forms のプロジェクトを作成したら Nuget から CoreTweet のパッケージをインストールします

f:id:matatabi_ux:20150625071801p:plain

あとはおためし・・・次のようなサービスクラスを書いてみました

/// <summary>
/// つぶやきサービス
/// </summary>
public class TweetService
{
    /// <summary>
    /// Consumer Key (API Key) 
    /// </summary>
    private const string ApiKey = @"ここに API Key を記述";

    /// <summary>
    /// Consumer Secret (API Secret)
    /// </summary>
    private const string ApiSecret = @"ここに API Secret を記述";

    /// <summary>
    /// Access Token
    /// </summary>
    private static readonly string AccessToken = @"ここに Access Token を記述";

    /// <summary>
    /// Access Token Secret
    /// </summary>
    private static readonly string AccessTokenSecret = @"ここに Access Token Secret を記述";

    /// <summary>
    /// つぶやく
    /// </summary>
    /// <param name="message">つぶやく内容</param>
    /// <param name="cancellation">中断トークン</param>
    /// <returns></returns>
    public async Task TweetAsync(string message, CancellationToken cancellation)
    {
        var tokens = Tokens.Create(ApiKey, ApiSecret, AccessToken, AccessTokenSecret);
        var result = await tokens.Statuses.UpdateAsync(
            new { status = message },
            cancellation);
    }

    /// <summary>
    /// つぶやく
    /// </summary>
    /// <param name="message">つぶやく内容</param>
    /// <returns></returns>
    public Task TweetAsync(string message)
    {
        return this.TweetAsync(message, new CancellationTokenSource().Token);
    }
}

private な定数には、先ほどメモした各種キー文字列を記述します

さらにこのサービスクラスを下記のように呼び出すコードを書きます

await this.service.TweetAsync("これは Programmable な Tweet テストです!");

このコードをさっそく実行!

f:id:matatabi_ux:20150625072435p:plain

無事につぶやけましたね! CoreTweet は偉大です