この記事はVisual Studio / Visual Studio Code Advent Calendar 2015の23日目の記事です。
また、この記事はXamarin Advent Calendar 2015の11日目の記事、Xamarinでマルチプラットフォーム用のプロジェクトを作るの続きになります。
Visual Studio Team ServiceにはAPIがあります
Visual Studio Team ServiceのAPIは、リンク先を見てもらえば分かりますが、OAuth2の認証とアクセス方式でアクセスできます。
(BASIC認証も使えますが、OAuth2の方がいいですよね)
アプリを登録する
よくあるOAuth2サイトと同じように事前にアプリを登録してClient IDとClient Secretで認証を行います。
それで得たAccess TokenをAuthorizationヘッダにBearer形式で付加してAPIアクセスを行います。
まさにOAuth2。
アクセスを行う
アプリを登録する際にScopeを適切に設定しておくことでAPIでアクセスできる範囲が変わります。
ただし、一度設定すると変更できないようになっています。
認可を行う範囲をよく考えて決めておきましょう。
サンプルアプリ
サンプルアプリはGitHubに登録してあります。
Visual Studio 2015のプロジェクトです。
UWPのプロジェクトしか入れてませんが、Forms.Initして、LoadApplicationでVsoAppを指定してやればiOSでもAndroidでも動くと思います。
ただ、サンプルなのでログインとチームの選択画面を表示するところまでしか行っていませんが…。
また、アプリを登録したら、Constantsクラスに登録されている値を設定してください。
APIアクセス方法
APIのアクセスは、以下のクラスで行っています。
クラス | 機能 | 備考 |
---|---|---|
VsoApi | APIアクセスルーチン | APIアクセスのみ |
VsoController | APIアクセスコントローラー | シーケンス制御 |
VsoToken | OAuth2認証用 | |
VsoAccount | アカウント情報 | 認証後のチーム情報取得用データ |
LoginForm | ログイン時の画面 | WebViewを貼り付けただけ |
AccountSelectForm | チーム選択用画面 | ListView |
プロジェクト構成
前回のXamarinのでも書いたのですが、MV+VとVでプロジェクトが分かれていて、それぞれが共有プロジェクトです。
他言語化していないので、文字列部分は無し、XAMLも使っておらず、という状態。
非常に鬱陶しいかもしれません(笑)
また、バインディングにはINotifyPropertyChangedを使う形式にしてあります。
APIの話
APIを使えば一通りのことができるようになっているようです。
(Git部分はまあ仕方ない)
ただ、前にも書きましたが、.Net用Clientライブラリを使う方が後々のためとは思います。
終わりに
駆け足で概要だけ見てみましたが、真面目に使おうと思うと…使い所が無いんです。このAPI。
アプリを登録しておかないとダメだし、ユーザーは認可制だし。
かなり内々でないと使わないかもしれませんねー。