Share via


リモート アイテムを使用して共有ファイルとフォルダーにアクセスする

OneDrive では、ドライブに共有フォルダーを追加できます。これにより、共有フォルダーからコンテンツへのアクセスが容易になります。 OneDrive に共有フォルダーを追加すると、そのフォルダーがルートに表示され、そのコンテンツは OneDrive 同期クライアントを使用して同期されます。

アイテムのコレクションを列挙すると、remoteItem ファセットのあるアイテムとして共有フォルダーが表示されます。 このファセットには、OneDrive API を使用して共有フォルダーのコンテンツにアクセスするために必要な情報が含まれています。

ユーザーのドライブに共有フォルダーを追加する

ユーザーのドライブに共有フォルダーを追加するには、次の要件を満たす必要があります。

  • ユーザーには共有フォルダーへの明示的なアクセス許可があり、リンクを介して共有フォルダーにアクセスしていません。
  • アプリには、共有フォルダーが追加されるドライブへの読み取り-書き込みアクセス権が必要です。

注:共有フォルダーは、ユーザーのドライブのルートにのみ追加できます。

共有フォルダーをドライブに追加するには、アプリで remoteItem ファセットの共有フォルダーの詳細を、ドライブのルート コレクションに投稿します。 以下に例を示します。

POST /drive/root/children
Content-Type: application/json

{
  "name": "Team Documents",
  "remoteItem": {
      "id": "12345abcde!1221",
      "parentReference": { "driveId": "12345abcde" }
  }
}

注:driveIdid が必要です。

成功すると、サービスは作成されたリモート アイテムの完全な詳細を返します。

HTTP/1.1 201 Created
Content-Type: application/json

{
  "id": "98765432!12399",
  "name": "Team Documents",
  "remoteItem": {
    "id": "12345abcde!1221",
    "parentReference": {
      "driveId": "12345abcde"
    },
    "folder": { "childCount": 15 }
  },
  "lastModifiedDateTime": "2015-08-10T13:47:11Z",
  "createdDateTime": "2015-08-10T13:47:11Z",
}

ユーザーのドライブから共有フォルダーを削除する

共有フォルダーはリモート アイテムを削除するだけで削除できます。

DELETE /drive/items/{local-item-id}

共有フォルダーが正常に削除されると、204 コンテンツがありませんが返されます。 これでは、共有フォルダーに含まれる共有フォルダーやアイテムは削除されません。

HTTP/1.1 204 No Content

共有フォルダーの内容を列挙する

リモート アイテムは、それが表す実際のアイテムを呼び出すために必要な情報を提供します。 リモート アイテムは、そのアイテムのユーザー ドライブ内のプレース ホルダですが、ユーザーのドライブ内のアイテムのようにアクセスすることはできません。 たとえば、コレクションにリモート アイテムを要求すると、サーバーからエラーが発生します。

この例では、次のリモート アイテムを考えてみます。

{
  "id": "98765432!12399",
  "name": "Team Documents",
  "remoteItem": {
    "id": "12345abcde!1221",
    "parentReference": {
      "driveId": "12345abcde"
    }
  },
  "lastModifiedDateTime": "2015-08-10T13:47:11Z",
  "createdDateTime": "2015-08-10T13:47:11Z"
}

この共有フォルダーのコンテンツを列挙するには、remoteItem プロパティを使用して、リモート ドライブに含まれる共有フォルダーへの要求を作成します。

GET /drives/{drive-id}/items/{item-id}/children

この例では、共有フォルダーの親ドライブを呼び出して、共有フォルダーの子を返します。

HTTP/1.1 200 OK
Content-Type: application/json

{
  "value":
  [
    {
      "id": "12345abcde!9912",
      "name": "Team Roster.xlsx",
      "file": {  },
      "size": 90122
    }
  ]
}

リモート アイテムで Delta を使用する

共有フォルダーのあるドライブで delta を使用すると、共有フォルダー自体が応答の一部として返されますが、共有フォルダー内のアイテムは返されません。 共有フォルダーごとに deltaを個別に呼び出し、キャッシュされた delta のトークンを個別に呼び出す必要があります。

アイテムを共有フォルダーに移動する

OneDrive API では、アイテムの共有フォルダーへの移動やコピーをサポートしていません。 通常のアップロード アクションを使用し、remoteItem の driveIdid 対象にすることで、新しいアイテムをフォルダーに作成できます。