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

第51回SkyDrive API 概要(4)─⁠─ファイルの共有ほか

はじめに

Windows 8のConsumer Previewの公開が迫り、Windows 8とSkyDriveの連携、そしてSkyDriveの新機能についての情報も公開されていますBuilding Windows 8⁠。エクスプローラーとの統合は待ちに待った人も多いのではないでしょうか。APIの更新などもあれば、この連載でも紹介したいと思います。

さて今回の内容は、前回から引き続きLive Connectを利用したSkyDriveのアクセスです。前回までにある程度までのフォルダーやファイルの基本的な操作について紹介しています。今回は、APIによるファイルの共有と、ファイルのコメントやタグの取得について紹介します。

ファイルの共有

SkyDriveサービス自体の大きな特徴のひとつは、共有機能です。少しややこしい部分でもあるのですが、共有する相手は、サービスでは次の3種類に分類されて表示されています。

  • 自分のみ
  • 全員(パブリック)
  • リンクを受け取った人

「リンクを受け取った人」は、もう少し詳しくみると次の2種類に分類できます。

  • リンクを知っていれば誰でもアクセス可能
  • 指定したユーザーがサインインした状態でのみアクセス可能

前者はアクセスに認証が不要なため、Webサイトなどで公開すると不特定多数の人がアクセスできる状態になっていますので、少し注意が必要です。全員がアクセスできる状態との違いは、ファイルの所有者のSkyDriveのページにアクセスしたときに表示されるか、されないかです。

共有は、図1のようにページの右側の共有から設定を行います。また、ファイルやフォルダーの右クリックメニューからも共有できます。

図1 共有設定 図1 共有設定

指定したユーザーに共有リンクを知らせるには、図2のように電子メールで相手に送信します。または、「リンクの取得」からURLをコピーして相手に知らせます。

図2 電子メールの送信
図2 電子メールの送信

共有リンクは、ファイルの表示だけでなく編集もできるリンクも取得できます。リンクの取得図3では、次のように分類されています。

図3 リンクの取得
図3 リンクの取得

これらの共有設定はファイル単位で行えます。フォルダーに対しても共有情報が設定されています[1]。非公開のフォルダー内の特定のファイルだけ公開するといった操作もできます。

上記の内容以外に、TwitterやFacebookなどへの投稿による共有や、WebサイトにHTMLコードを埋め込んで共有する方法もあります。

APIでファイルやフォルダーの共有設定を知る方法は、前回までの内容にでてきています。ファイルやフォルダーの情報を取得したときのFileFolderオブジェクトのshared_withの内容でわかります。shared_withオブジェクト内のaccessプロパティが最初の3種類を示しています。

  • Just me: 自分のみ
  • Everyone (public): 全員(パブリック)
  • People with a link: リンクを受け取った人

共有リンクの生成

さて、APIでの共有の操作ですが、Webサイト上で可能な変更や削除などの操作はできません。フォルダーやファイルに対して、リンクを知っている人だけがアクセスできる共有リンクの生成のみできます。

共有リンクはアプリ用に生成され、Webで生成したリンクのURLとは異なります。アプリによって共有されたファイルは図4のようにWebサイトで確認できます。

図4 アプリによる共有
図4 アプリによる共有

OAuthによりユーザーから認可を受けたアプリ自身は自由にファイルにアクセスできるため、共有リンクの生成は、アプリのユーザーがアプリのユーザーでない人と共有したい場合などの用途に限られてくると思います。

実際に共有リンクを生成する方法は簡単です。次のようなURLにHTTP GETメソッドでアクセスします。

表示のみできる共有リンク
https://apis.live.net/v5.0/FILE_ID/shared_read_link?access_token=ACCESS_TOKEN
編集と表示ができる共有リンク
https://apis.live.net/v5.0/FILE_ID/shared_edit_link?access_token=ACCESS_TOKEN

FILE_ID部分はFileオブジェクトのidの値を指定します。フォルダーの共有の場合はFolderオブジェクトのidを指定します。

HTTP GETメソッドのため、共有リンクの生成というよりは取得なのですが、このURLにアクセスすることで共有リンクのURLが新たに生成されファイルの状態も変更されますので、ここでは生成と呼んでいます。

サーバーからの応答は次のようなJSONデータになります。

{
   "link": "https://skydrive.live.com/redir.aspx?xxxxx"
}

共有リンクを作成した場合、共有状態を元に戻すことはできませんので注意してください。

また、Webページに埋め込み用のHTMLコードの取得(生成)もできます。

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

埋め込み用のHTMLコードを取得可能かどうかは、Fileオブジェクトのis_embeddableからわかります。

コメントの取得

SkyDriveでは、公開されているフォルダーやファイルにコメントを投稿できます図5⁠。次は、それらのコメントを取得してみましょう。

図5 コメントの投稿
図5 コメントの投稿

APIでは、今のところファイルのコメントの取得のみ可能です。必要なScopeはwl.photosまたはwl.skydriveです。wl.contacts_photosのScopeであれば、共有されているファイルのコメントも取得できます。

コメントの取得は、次のURLのようにひとつのフォルダーまたはファイルを示すURLに「/comments」を付けてHTTP GETアクセスするだけです。

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

FILE_IDの部分は、Fileオブジェクト以外にもAlbum・Photo・Videoオブジェクトのidを指定できます。

取得できるJSONは次のようになります。

{
   "data": [
      {
         "id": "comment.xxxxx", 
         "from": {
            "name": "梓 中野", 
            "id": "xxxxx"
         }, 
         "message": "ようこそにゃん", 
         "created_time": "2012-02-22T00:00:00+0000"
      }
   ]
}

このコメントを表すCommentオブジェクトの内容は次の通りです。

プロパティ 説明
data array Coomentオブジェクトを含む配列
id string CommentオブジェクトのID
from object コメントしたユーザーの情報
name(fromオブジェクト) string ユーザーの名前
id(fromオブジェクト) string ユーザーのID
message string コメント(最大10000文字)
create_time string コメント日時(ISO 8601形式)

対象のファイルにコメント可能かどうかとコメント数については、File・Photo・Videoオブジェクトのcomments_enabledcomments_countプロパティからわかります。

コメントとAPIに関して、フォルダーやアルバムのコメントは現在取得できません。また、コメントの投稿もできませんが、ドキュメントではそういった記述もあるため、今後できるようになるかもしれませんね。

タグの取得

SkyDriveでは、写真やビデオに人物タグを付けられます図6⁠。写真の場合は、顔の座標情報も持っています。

図6 タグの追加
図6 タグの追加

タグ付けは、WebサイトやLive Photoギャラリーで付けてSkyDriveにアップロードするか、Windows Phoneによって行えます。

APIではタグ情報の取得のみ可能です。必要なScopeはコメントの取得のときと同じで、wl.photosまたはwl.skydriveです。

タグの取得は、次のURLのようにひとつの写真またはビデオを示すURLに「/tags」を付けてHTTP GETアクセスします。

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

PHOTO_IDの部分は、Photoオブジェクトのidの値、またはVideoオブジェクトのidの値を指定します。

写真の場合、取得できるJSONは次のようになります。

{
   "data": [
      {
         "id": "tag.xxxxx", 
         "user": {
            "name": "憂 平沢", 
            "id": "xxxxx"
         }, 
         "x": 32.5, 
         "y": 38.2812, 
         "created_time": "2012-02-22T00:00:00+0000"
      }
   ]
}

このタグ情報を表す、Tagオブジェクトの内容は次の通りです。

プロパティ 説明
data array Tagオブジェクトを含む配列
id string TagオブジェクトのID
user object 人物タグのユーザー
name(userオブジェクト) string ユーザーの名前
id(userオブジェクト) string ユーザーのID
x number 横方向のタグの中心位置
写真の横幅を100とした場合の0〜100の小数点を含む値
y number 縦方向のタグの中心位置
写真の縦幅を100とした場合の0〜100の小数点を含む値
create_time string タグの作成日時(ISO 8601形式)

xとyはVideoオブジェクトのときは含まれていません。また、xとyからわかるようにタグの中心位置のみ示していて、顔の範囲を示す情報は持っていません。

対象の写真・ビデオにタグの追加が可能かどうかとタグの数については、Photo・Videoオブジェクトのtags_enabledtags_countプロパティからわかります。

既に述べたようにタグの追加はAPIではできません。Photo・Videoオブジェクトで取得できるtags_enabledは、ユーザーがタグの追加が可能かどうかを示しています。

おわりに

今回はここまでです。まだ若干 紹介しておきたい内容がありますので、次回もSkyDrive APIの予定です。簡単なアプリも作成予定ですのでお楽しみに。

おすすめ記事

記事・ニュース一覧