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"); } }
試してみた様子がこんな感じ
今回は Xamarin.Forms の WebView で認証ページを表示しましたが、ユーザーにとっては標準の外部ブラウザに飛ばしてもらった方がフィッシングサイトかどうか確認しやすいので安心かもしれません