しっぽを追いかけて

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

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

Xamarin.Forms で Twitter の OAuth 1.0 認証をする

前回 までは Twitter の開発者サイトで生成したアクセストークンを使って開発者アカウントでつぶやいていましたが、本来はアプリを利用するユーザーのアカウントでつぶやきたいところ

というわけで Xamarin.Forms で OAuth 1.0 認証を利用してみることにしました

・・・意外と Xamarin.Forms の実装例が紹介されていない;

前回も利用した CoreTweet を利用すると、下記のような手順で OAuth 1.0 認証が実装できます

// Twitter アプリ連携認証ページ Uri の取得
var session = await CoreTweet.OAuth.AuthorizeAsync(ApiKey, ApiSecret);

// WebView(外部ブラウザの方がユーザーにとってセキュアかも?)でアプリ連携認証ページに遷移
webView.Source = session.AuthorizeUri.AbsoluteUri;

// WebView 上でユーザーに、Twitter ID、パスワードを入力してアプリ連携認証してもらう
// WebView に表示された PIN コード(7桁)を入力してもらう

// 入力された PIN コードを利用してアクセストークンを取得
this.pinEntry.TextChanged += (s, e) =>
{
    var pin = e.NewTextValue;
    if (!string.IsNullOrEmpty(pin) && pin.Length == 7)
    {
        var tokens = await CoreTweet.OAuth.GetTokensAsync(session, pin);
        await DisplayAlert("XamarinTweet", "OAuth 認証が完了しました", "OK");
    }
}

試してみた様子がこんな感じ

f:id:matatabi_ux:20150702220716g:plain

今回は Xamarin.Forms の WebView で認証ページを表示しましたが、ユーザーにとっては標準の外部ブラウザに飛ばしてもらった方がフィッシングサイトかどうか確認しやすいので安心かもしれません