アプリから Microsoft OneDrive にアクセスする場合の一般的なタスク

このトピックでは、アプリからユーザーの OneDrive コンテンツにアクセスする場合に一般的なタスクを実行する方法について説明します。

OneDrive ディレクトリのスキャン

Live Connect API を使って OneDrive ディレクトリ内のユーザーのトップ レベル フォルダーに関する情報を取得するには、me/skydrive または USER_ID/skydrive に対する要求を行います。この呼び出しの方法は次のとおりです。

  • Representational State Transfer (REST) では、GET を使います。
  • JavaScript では、method パラメーターで "GET" を指定して WL.api 関数を使います。
  • C# では、LiveConnectClient.GetAsync メソッドを使います。
  • Objective-C では、LiveConnectClient getWithPath メソッドを使います。
  • Java では、LiveConnectClient.getAsync メソッドを使います。

返される JavaScript Object Notation (JSON) 形式のオブジェクトで、2 つの構造体に注目します。id 構造体はトップ レベル フォルダーのフォルダー ID を表し、upload_location 構造体はファイル、写真、動画、オーディオをアップロードできるトップ レベル フォルダーの場所を表します。

me/skydrive/files または USER_ID/skydrive/files に対する要求で返される JSON 形式のオブジェクトには、ユーザーのトップ レベル フォルダーだけについて、そのフォルダーに含まれるすべての子フォルダー、子アルバム、ファイルに関する情報が含まれます。

その情報を基に、FOLDER_ID/files または ALBUM_ID/files を指定して要求を行うことで、ユーザーの OneDrive ディレクトリ全体をスキャンできます。FOLDER_IDALBUM_ID は、ディレクトリ内の任意の場所にあるフォルダーまたはアルバムの ID に対応する id 構造体を表します。

ユーザーのトップ レベルの OneDrive フォルダーと同じように、任意のフォルダーまたはアルバムの upload_location 構造体を使って、そのフォルダーまたはアルバムにファイルをアップロードできます。さらに、任意のファイル、写真、動画、またはオーディオの upload_location 構造体を使って、そのファイル、写真、動画、またはオーディオの内容を上書きすることもできます。

ユーザーの OneDrive ディレクトリの概念を示す例を次に示します。

GET https://apis.live.net/v5.0/me/skydrive?access_token=ACCESS_TOKEN
---
200 OK
{
    "id": "folder.a6b2a7e8f2515e5e", 
    ...
    "upload_location": "https://apis.live.net/v5.0/folder.a6b2a7e8f2515e5e/files",
    ...
    "type": "folder",
    ...
}
---
GET https://apis.live.net/v5.0/folder.a6b2a7e8f2515e5e/files?access_token=ACCESS_TOKEN
---
200 OK
{
    "data": [
        {
            "id": "folder.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!110", 
            ...
            "upload_location": "https://apis.live.net/v5.0/folder.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!110/files/"
            ...
            "type": "folder",
            ...
        }, {
            "id": "photo.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!131", 
            ...
            "upload_location": "https://apis.live.net/v5.0/photo.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!131/content/", 
            ...
            "type": "photo",
            ...
        }, {
            "id": "file.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!119", 
            ...             
            "upload_location": "https://apis.live.net/v5.0/file.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!119/content/", 
            ...
            "type": "file", 
            ...
        }
    ]
}

上へ戻る

サインインしたユーザーが共有できる OneDrive オブジェクトの一覧の取得

サインインしたユーザーが共有できるすべての OneDrive オブジェクトを検出するには、wl.contacts_skydrive スコープを使って、/USER_ID/skydrive/shared に対する GET 要求を行います。USER_ID には、me または同意しているユーザーのユーザー ID を指定します。次に例を示します。

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

メモ  OneDrive API は、サインインしたユーザーと共有しているフォルダーでのファイルの作成、更新、または削除をサポートしていません。アプリが操作できるのは、サインインしたユーザーが所有しているファイルのみです。

重要  共有フォルダーにファイルをアップロードするサード パーティのアプリはサポートしません。

上へ戻る

フレンドリ名による OneDrive の特定のフォルダーへのアクセス

OneDrive の特定のフォルダーにアクセスする場合、フォルダー ID の代わりにフレンドリ名を使うことができます。次のフレンドリ名を使って、OneDrive UI の対応するフォルダーにアクセスできます。

  • USER_ID/skydrive/camera_roll は、[OneDrive カメラ ロール] フォルダーを表します。
  • USER_ID/skydrive/my_documents は、[ドキュメント] フォルダーを表します。
  • USER_ID/skydrive/my_photos は、[写真] フォルダーを表します。
  • USER_ID/skydrive/public_documents は、[共有] フォルダーを表します。

上記のいずれについても、USER_ID の部分は、サインインしたユーザーの場合は me、その他の同意しているユーザーの場合はそのユーザーのユーザー ID に置き換えます。

たとえば、[ドキュメント] フォルダーのプロパティを読み取る場合は、次のように REST API 呼び出しを使って、フォルダーの ID を指定します。

GET https://apis.live.net/v5.0/folder.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!110?access_token=ACCESS_TOKEN

同様に、[ドキュメント] フォルダーのプロパティは、次のように REST API 呼び出しでフレンドリ名を指定して読み取ることもできます。

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

メモ  フレンドリ名を使ってフォルダーにファイルを移動またはコピーする場合は、destination 構造体の値としてフレンドリ名だけを指定します。REST API を呼び出してファイルを [ドキュメント] フォルダーに移動する例を次に示します。

MOVE https://apis.live.net/v5.0/file.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!126

Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json

{
    "destination": "my_documents"
}

上へ戻る

ユーザーが最近使ったドキュメントの一覧の取得

ユーザーが最近使った OneDrive ドキュメントの一覧を取得するには、wl.skydrive スコープを使って、/USER_ID/skydrive/recent_docs に対する GET 要求を行います。USER_ID には、me または同意しているユーザーのユーザー ID を指定します。次に例を示します。

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

上へ戻る

ユーザーの OneDrive ストレージ クォータの合計と残りのクォータの取得

ユーザーに割り当てられている OneDrive の利用可能な記憶域スペースと未使用の記憶域スペースに関する情報を取得するには、GET または /me/skydrive/quota に対する /USER_ID/skydrive/quota 要求を行います。USER_ID には、サインインしたユーザーの ID を指定します。REST API の例を次に示します。

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

次のような JSON 形式のオブジェクトが返されます。

{
    "quota": 26843545600,
    "available": 26805319016
}

この例で、quota フィールドは、ユーザーの利用可能な記憶域スペースを示す合計バイト数です。available フィールドは、ユーザーの未使用の記憶域スペースを示す残りのバイト数です。

ヒント  ファイルをアップロードする前に、利用可能な記憶域スペースが十分に存在することをアプリで確認してください。たとえば、アプリでは、ファイルのサイズをバイトで取得し、そのバイト数と available フィールドのバイト数を比較できます。ファイルのサイズが available フィールドよりも大きい場合は、アプリでファイルをアップロードしないでください。アプリでファイルをアップロードしようとすると、アップロード要求が失敗し、OneDrive から次のエラーが返されます。

{
    "error": {
        "code": "resource_quota_exceeded", 
        "message": "The user has reached his or her storage quota limit."
    }
}

上へ戻る

OneDrive 項目のプレビューの表示

OneDrive の項目のプレビューを表示するには、GET に対する /skydrive/get_item_preview?type=TYPE&url=URL 要求を行います。オプションの type クエリ文字列パラメーターは、次のいずれかです。

  • thumbnail
  • small (最大 100 × 100 ピクセルのプレビューを取得する場合)
  • album (最大 200 × 200)
  • normal (最大 800 × 800)

必須の url クエリ文字列パラメーターは、OneDrive の項目への共有リンクです。次に、長い OneDrive URL を使う例と短い sdrv.ms URL を使う例を示します (sdrv.ms は OneDrive 固有の URL 短縮サービスです)。

GET https://apis.live.net/v5.0/skydrive/get_item_preview?type=normal&url=https%3A%2F%2Fskydrive.live.com%2Fredir.aspx%3Fcid%3Da6b2a7e8f2515e5e%26amp%3Bresid%3DA6B2A7E8F2515E5E!132%26amp%3Bparid%3DA6B2A7E8F2515E5E!110%26amp%3Bauthkey%3D!ACuMMo37Ju8_xw0x

GET https://apis.live.net/v5.0/skydrive/get_item_preview?type=normal&url=http%3A%2F%2Fsdrv.ms%2FLTIvcyx

次の点に注意してください。

  • get_item_preview 要求を行う場合、スコープを要求したり、アクセス トークンを指定したりする必要はありません。
  • 項目が写真ではなく、プレビューが項目に関連付けられている場合は、縮小表示プレビューが表示され、type パラメーターは指定した場合でも無視されます。
  • 正常な応答では、responseStatus の値が "302 Found" になり、"Location" 応答ヘッダーに項目のプレビューへのリンクが含まれます。
  • 特定のサイズのプレビューが存在しない場合は、存在するプレビューの中から次に大きいサイズのプレビューが表示されます。項目に関連付けられているプレビューが存在しない場合は、404 (Not Found) エラーが返されます。
  • 項目への共有リンクは、次の 3 とおりの方法で取得できます。
    • ITEM_ID/shared_read_link に対する GET 要求を行います。ITEM_ID には、OneDrive 項目の ID を指定します。次に例を示します。
      GET https://apis.live.net/v5.0/file.a6b2a7e8f2515e5e.A6B2A7E8F2515E5E!131/shared_read_link?access_token=ACCESS_TOKEN
      
      
      共有リンクの値は、JSON 形式の応答オブジェクトの link 構造体に含まれています。
    • OneDrive UI で項目を選び、[共有] をクリックします。[リンクの取得] をクリックし、[View only] の横にある [Create] をクリックします。OneDrive に共有リンクの値が表示されます。この値は get_item_preview 要求で使うことができます。値は https://onedrive.live.com/redir.aspx?cid=a6b2a7e8f2515e5e&resid=A6B2A7E8F2515E5E!132&parid=A6B2A7E8F2515E5E!110&authkey=!ACuMMo37Ju8_xw0x のようになります。
    • OneDrive UI で項目を選び、[共有] をクリックします。[Post to Twitter] (Twitter へ投稿する) をクリックし、画面の指示に従って [投稿] をクリックします。新しく作成された Twitter の投稿に共有リンクの値が含まれています。この値は get_item_preview 要求で使うことができます。値は http://1drv.ms/LTIvcyx のようになります。
  • url クエリ文字列パラメーターの値は、URL エンコードする必要があります。たとえば、コロン (":") 文字には %3A を、スラッシュ ("/") 文字には %2F を、疑問符 ("?") 文字には %3F を、アンパサンド ("&") 文字には %26 を使います。

上へ戻る

 

 

表示:
© 2014 Microsoft