0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Visual Studio / Visual Studio CodeAdvent Calendar 2015

Day 23

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

Posted at

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?