本記事の対象APIは既にサポートされていません。記事は参考程度にご利用ください。
今回からはWindows Live スペースのフォト アルバムを操作できるWindows Live Photo APIについてです。
Windows Live スペース フォト アルバム
ブログサービスであるWindows Live スペースとその機能のひとつフォト アルバムをご存知でしょうか。フォト アルバムは,写真などの画像ファイルをアルバムとして分類し,Webサイト上にアップロードして公開できるサービスです(図1)。
図1 フォト アルバム
通常は,ユーザーはアルバムの作成や写真のアップロードをWebサイトまたはWindows Live フォト ギャラリーから行いますが,Windows Live SDKにはフォト アルバムをプログラムから操作できるAPIが提供されています。今回からは,そのAPIを使ってみましょう。
Windows Live Photo API
フォト アルバムを操作できるAPIはWindows Live Photo APIと呼ばれ,使用するプロトコルの違いにより
- Windows Live Photo WebDAV API
- Windows Live Photo ATOM API
の2種類があります。
API利用によって次の操作が可能です。
- 写真のアップロードおよびダウンロード
- アルバムの作成
- 写真またはアルバムの名前変更および削除
Live Photo APIは,Windows Live ID委任認証と併せて利用します。つまり,フォト アルバムを操作するためにあらかじめユーザーの承認を得る必要があります。委任認証については本連載の第14回と15回に紹介しています。
以上のことからAPI利用によりWindows Liveユーザーのブログスペースをフォトストレージとして使用したり,ブログスペースからフォトを参照・利用するなどのWebアプリケーションの作成が可能であることがわかります。
WebDAV API,ATOM APIともCTP(Community Technology Preview)リリースです。今後,仕様が変わる可能性がありますので利用には注意してください。
アクセス許可
ここからは委任認証を理解しているものとして進めます。委任認証ではアプリケーションプロバイダ(通常はWebサイト)が必要とするアクセス許可(オファーとアクション)を指定し,ユーザーの承認を得る必要があります。今回のPhoto APIではフォト アルバムに対しての操作のオファーおよびアクションを指定します。
Photo APIで使用するオファーとアクションの組み合わせは次の2種類です。
| オファー・アクション | 説明 |
|---|---|
| SpacesPhotos.Read | アルバムと写真に対する読み取り専用でのアクセス許可 |
| SpacesPhotos.ReadWrite | アルバムと写真に対する読み取りおよび追加・変更のアクセス許可 |
必要とするオファー・アクションを承認要求URL,psパラメータに指定しましょう。コンマ(,)区切りで両方を指定することも可能です。ユーザーがアクセスする承認要求ページは図2のようになります。
図は2種類のオファーとアクションを指定した場合です。
フォト アルバムへのアクセス
本連載はAtom Publishing(AtomPub)プロトコルに基づいたWindows Live Photo ATOM APIの利用方法を紹介します。AtomPubプロトコルはHTTPによるXMLをベースとしたWeb APIによく使用される仕様です。以前のLive Photo API (以前はWindows Live Spaces Photo APIと呼ばれていました)は,WebDAVプロトコルのみでしたがCTPリリースからAtomPubによる操作が可能になりました。
フォト アルバムを操作するには,次の書式に従ったURLへアクセスし,HTTPのGETやPOSTメソッドによりアルバム・写真情報の取得やアップロードを行います。
https://cumulus.services.live.com/@C@[LID]/AtomSpacesPhotos[/リソースへのパス]
[LID]にはユーザーデータの場所を示す識別子,委任認証により取得した承認トークンのlidパラメータを指定します。URLの末尾にはリソースへのパス,つまりアルバムや写真を示す値を指定します。
上記URLへアクセスするときに,HTTPのAuthorizationヘッダを指定する必要があります。ヘッダの値に承認トークンのdeltパラメータの値(委任トークン)を使います。
以上をまとめると,フォト アルバムへアクセスするHTTPのリクエストヘッダは次のようになります。
[HTTP Method] /AtomSpacesPhotos[/リソースへのパス] HTTP/1.1
Host: cumulus.services.live.com
User-Agent: [Name of User Agent]
Authorization: DelegatedToken dt="[委任トークン]"

