使ってみよう! Windows Live SDK/API

第48回 SkyDrive API 概要(1)

この記事を読むのに必要な時間:およそ 8.5 分

サポートしているファイル

扱うファイルにも制限があります。サポートしているファイルは,次の通りです。

  • ドキュメント(PDF,テキストファイル,マイクロソフトOffice文書)
  • 写真(一般的なファイルフォーマットのみ)
  • ビデオ(H.264およびWindows Media Video)
  • 音楽(アップロードはWaveファイルのみ)

大きく分類して,ドキュメント・写真・ビデオ・音楽の4種類があります。サポートしていない形式(拡張子)は,アップロードできません。ただし,参照やダウンロードは可能です。

APIを利用したアプリの開発

Live Connectは,ユーザーの認証に,標準的なプロトコルのOAuth 2.0を利用しています。OAuthの仕組みに従って,アプリは利用者からリソースのアクセス許可を得て,SkyDriveなどのリソースを操作します。Live ConnectとOAuthについては,第45回で詳しく説明していますので,そちらをご覧ください。また,事前にアプリケーション設定サイトで,アプリの登録が必要です。新しくガイドラインが提供されています。こちらも開発する前に併せて確認してください。

Live Connectでは,リソースのアクセスにREST APIを利用します。一部のリソースを除いて,すべてHTTP(S)の通信と,JSON形式のデータのやりとりで行います。基本的にどのアプリもこのREST APIを利用してリソースアクセスを行います。

Webブラウザー上で動作するアプリとWindows 8およびWindows Phone向けには,JavaScript APIManaged APIも利用できます。ライブラリーとして提供されていて,内部ではOAuthによる認可処理とREST APIの呼び出しが行われていますが,より簡単にそして各プラットフォームに適したUIが提供されています。JavaScript APIは,これまでにも紹介していますので,以前の連載内容を参照してください。

今回の簡単なサンプルコードでは,REST APIのみを使用します。それでは,SkyDriveに関係するREST APIをみていきましょう。

フォルダー情報の取得

最初にフォルダーの情報を取得してみましょう。たとえば,SkyDriveのルートフォルダーの情報は次のURLにアクセスすると得られます。

  • https://apis.live.net/v5.0/me/skydrive?access_token=ACCESS_TOKEN

URLのACCESS_TOKENには,OAuthのAccess tokenアクセストークンを指定します。手っ取り早くアクセストークンを得るには,Webブラウザーに次のURLを入力します。認可画面図4に移動し,認可後のURLを参照するとアクセストークンが含まれています。

  • https://oauth.live.com/authorize?client_id=CLIENT_ID&scope=wl.skydrive&response_type=token&locale=ja&redirect_uri=https://oauth.live.com/desktop

CLIENT_IDには,アプリ登録時に取得したClient IDを指定します。

図4 認可画面

図4 認可画面

アクセストークンの取得については,第45回で詳しく説明していますので,そちらも参照してください。

SkyDriveのアクセスについて,ユーザーから認可を得るときに指定する許可の内容Scopeスコープは,次の通りです。

Scopeの値 説明
wl.skydrive SkyDriveのフォルダー・ファイルの参照
wl.contacts_skydrive SkyDriveで共有されているフォルダー・ファイルの参照(wl.skydriveの内容を含む)
wl.skydrive_update SkyDriveのフォルダー・ファイルの作成・編集・削除(wl.contacts_skydriveの内容を含む)

ファイルの読み取りだけが必要な場合は,wl.skydriveを指定し,作成などのアクセスも含める場合は,wl.skydrive_updateを指定します。アプリに必要な許可のみユーザーに要求するようにしましょう。上記以外にも,よりアルバムや写真のアクセスに操作を制限した,wl.photosや,wl.contacts_photosも指定できます。

最初のURLにアクセスすると,ルートフォルダーの情報が,次のようなJSON形式で取得できます。

{
   "id": "folder.xxxxx", 
   "from": {
      "name": null, 
      "id": null
   }, 
   "name": "SkyDrive", 
   "description": null, 
   "parent_id": null, 
   "upload_location": "https://apis.live.net/v5.0/folder.xxxxx/files/", 
   "count": 4, 
   "link": "https://skydrive.live.com?cid\xxxxx", 
   "type": "folder", 
   "shared_with": {
      "access": "Just me"
   }, 
   "created_time": null, 
   "updated_time": "2012-01-09T14:00:00+0000"
}

Webブラウザーでも,簡単に内容を確認できます図5⁠。

図5 フォルダー情報の取得

図5 フォルダー情報の取得

このフォルダーの情報を表すFolderオブジェクトの内容は,次の通りです。

プロパティ 説明
data array Folderオブジェクトを含む配列(複数のアイテムを含む結果の場合)
id string FolderオブジェクトのID
from object フォルダー作成者の情報
name(fromオブジェクト) string 作成者の名前
id(fromオブジェクト) string 作成者のユーザーID
name string フォルダーの名前(編集可能)
description stringまたはnull フォルダーの説明(編集可能)
count number フォルダー内のアイテム数
link string SkyDriveでのフォルダーのURL
upload_location string アプリから,このフォルダーへファイルをアップロードするためのURL
Scope「wl.skydrive」が必要
parent_id string このフォルダーの上位階層のリソースID(親フォルダーのID)
type string オブジェクトの種類
フォルダーの場合は,folder
created_time string フォルダーの作成日時(ISO 8601形式)
updated_time string フォルダー内のコンテンツの更新日時(ISO 8601形式)
shared_with object フォルダーの共有情報
access(shared_withオブジェクト) string フォルダーの共有情報
次の値のいずれか
  • People I selected
  • Just me
  • Everyone (public)
  • Friends
  • My friends and their friends
  • People with a link

ひとつのフォルダー情報を取得する場合は,パスにFolderオブジェクトIDを指定してHTTP GETメソッドでアクセスします(URLのFOLDER_IDには,FolderオブジェクトのIDを指定します⁠⁠。

  • https://apis.live.net/v5.0/FOLDER_ID?access_token=ACCESS_TOKEN

フォルダー内のアイテムを取得する場合は,パスに/filesを付けて次のようにします。

  • https://apis.live.net/v5.0/FOLDER_ID/files?access_token=ACCESS_TOKEN

フォルダー情報を返すリソースのパスは,次の通りです。

パス 説明
/FOLDER_ID 特定のフォルダー
/FOLDER_ID/files 特定のフォルダー内のアイテム
/me/skydrive サインインユーザーのSkyDriveのルートフォルダー
/me/skydrive/files サインインユーザーのSkyDriveのフォルダー内のアイテム
/me/skydrive/shared または /me/skydrive/shared/files サインインユーザーのSkyDriveの共有フォルダー内のアイテム
/USER_ID/skydrive/files 特定のユーザーのSkyDriveのフォルダー内のアイテム
/ALBUM_ID/files 特定のアルバム内のアイテム

上記のUSER_IDは,パス「/me」などで得られるユーザーのIDです。ALBUM_IDは,今回紹介しませんが,アルバムを表すAlbumオブジェクトのIDです。

フォルダーに格納できるアイテムは,フォルダー,ファイル,写真,ビデオ,音楽の5種類です。実際に,写真などが含まれているフォルダーのファイル一覧を取得してみるといろいろな情報が得られると思います。

著者プロフィール

松江祐輔(まつえゆうすけ)

日本システムウエア株式会社 勤務。現在,ハードウェア設計・検証業務を担当。大学生・大学院生時代はベンチャー企業 有限会社ミレニアムシステムズにプログラマーとして従事。趣味はプログラミング。好きな言語はVisual Basic。Microsoft MVP for Windows Live Platform(Jul 2010 - Jun 2011),Windows Live(Jul 2011 - Jun 2013)。

URL:http://katamari.jp