はじめに
Windows 8のConsumer Previewの公開が迫り、Windows 8とSkyDriveの連携、そしてSkyDriveの新機能についての情報も公開されています(Building Windows 8 ) 。エクスプローラーとの統合は待ちに待った人も多いのではないでしょうか。APIの更新などもあれば、この連載でも紹介したいと思います。
さて今回の内容は、前回 から引き続きLive Connectを利用したSkyDriveのアクセスです。前回までにある程度までのフォルダーやファイルの基本的な操作について紹介しています。今回は、APIによるファイルの共有と、ファイルのコメントやタグの取得について紹介します。
ファイルの共有
SkyDriveサービス自体の大きな特徴のひとつは、共有機能です。少しややこしい部分でもあるのですが、共有する相手は、サービスでは次の3種類に分類されて表示されています。
自分のみ
全員(パブリック)
リンクを受け取った人
「リンクを受け取った人」は、もう少し詳しくみると次の2種類に分類できます。
リンクを知っていれば誰でもアクセス可能
指定したユーザーがサインインした状態でのみアクセス可能
前者はアクセスに認証が不要なため、Webサイトなどで公開すると不特定多数の人がアクセスできる状態になっていますので、少し注意が必要です。全員がアクセスできる状態との違いは、ファイルの所有者のSkyDriveのページにアクセスしたときに表示されるか、されないかです。
共有は、図1 のようにページの右側の共有から設定を行います。また、ファイルやフォルダーの右クリックメニューからも共有できます。
図1 共有設定
指定したユーザーに共有リンクを知らせるには、図2 のように電子メールで相手に送信します。または、「リンクの取得」からURLをコピーして相手に知らせます。
図2 電子メールの送信
共有リンクは、ファイルの表示だけでなく編集もできるリンクも取得できます。リンクの取得(図3 )では、次のように分類されています。
図3 リンクの取得
これらの共有設定はファイル単位で行えます。フォルダーに対しても共有情報が設定されています[1] 。非公開のフォルダー内の特定のファイルだけ公開するといった操作もできます。
上記の内容以外に、TwitterやFacebookなどへの投稿による共有や、WebサイトにHTMLコードを埋め込んで共有する方法もあります。
APIでファイルやフォルダーの共有設定を知る方法は、前回までの内容にでてきています。ファイルやフォルダーの情報を取得したときのFile やFolder オブジェクトのshared_with の内容でわかります。shared_withオブジェクト内のaccess プロパティが最初の3種類を示しています。
Just me: 自分のみ
Everyone (public): 全員(パブリック)
People with a link: リンクを受け取った人
[1]
以前は、フォルダー単位の共有設定のみ可能でした。
共有リンクの生成
さて、APIでの共有の操作ですが、Webサイト上で可能な変更や削除などの操作はできません。フォルダーやファイルに対して、リンクを知っている人だけがアクセスできる共有リンクの生成のみできます。
共有リンクはアプリ用に生成され、Webで生成したリンクのURLとは異なります。アプリによって共有されたファイルは図4 のようにWebサイトで確認できます。
図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 コメントの投稿
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_enabled とcomments_count プロパティからわかります。
コメントとAPIに関して、フォルダーやアルバムのコメントは現在取得できません。また、コメントの投稿もできませんが、ドキュメントではそういった記述もあるため、今後できるようになるかもしれませんね。
タグの取得
SkyDriveでは、写真やビデオに人物タグを付けられます(図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_enabled とtags_count プロパティからわかります。
既に述べたようにタグの追加はAPIではできません。Photo・Videoオブジェクトで取得できるtags_enabledは、ユーザーがタグの追加が可能かどうかを示しています。
おわりに
今回はここまでです。まだ若干 紹介しておきたい内容がありますので、次回もSkyDrive APIの予定です。簡単なアプリも作成予定ですのでお楽しみに。