Help us understand the problem. What is going on with this article?

Visual Studio Team ServiceをAPIでアクセスしてみる

More than 3 years have passed since last update.

この記事は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。
アプリを登録しておかないとダメだし、ユーザーは認可制だし。
かなり内々でないと使わないかもしれませんねー。

yakumomo
今のところ、AzureとXamarinとCoreOSとWindows10が好きです。 ここでは、実使用でのポイントをメモ。
http://blog.yakumomo.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away