次の方法で共有


共有 DriveItems へのアクセス

shareId または共有の URL を使用して、共有 DriveItem または共有アイテムのコレクションにアクセスします。

この API で共有の URL を使用するには、アプリで URL を共有のトークンに変換する必要があります。

アクセス許可

この API を呼び出すには、次のいずれかのアクセス許可が必要です。 アクセス許可の選択方法などの詳細については、「アクセス許可」を参照してください。

アクセス許可の種類 アクセス許可 (特権の小さいものから大きいものへ)
委任 (職場または学校のアカウント) Files.ReadWrite、Files.ReadWrite.All、Sites.ReadWrite.All
委任 (個人用 Microsoft アカウント) Files.ReadWrite、Files.ReadWrite.All
アプリケーション Files.ReadWrite.All、Sites.ReadWrite.All

HTTP 要求

GET /shares/{shareIdOrEncodedSharingUrl}

パス パラメーター

パラメーター名 説明
sharingTokenOrUrl string 必須。 API によって返される共有トークン、または適切にエンコードされた共有 URL。

共有 URL をエンコードする

共有 URL をエンコードするには、次のロジックを使用します。

  1. まず、base64 を使用して URL をエンコードします。
  2. base64 でエンコードされた結果を unpadded base64url 形式に変換します (値の末尾から = 文字を削除し、/_+- に置き換える)。
  3. 文字列の先頭に u! を追加します。

C# で URL をエンコードする例を以下に示します。

string sharingUrl = "https://onedrive.live.com/redir?resid=1231244193912!12&authKey=1201919!12921!1";
string base64Value = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sharingUrl));
string encodedUrl = "u!" + base64Value.TrimEnd('=').Replace('/','_').Replace('+','-');

応答

成功した場合、このメソッドは 200 OK 応答コードと、応答本文で sharedDriveItem リソースを返します。

要求

以下は、共有アイテムを取得する要求の例です。

GET /shares/{shareIdOrEncodedSharingUrl}

応答

以下は、応答の例です。

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

{
  "id": "B64397C8-07AE-43E4-920E-32BFB4331A5B",
  "name": "contoso project.docx",
  "owner": {
    "user": {
      "id": "98E88F1C-F8DC-47CC-A406-C090248B30E5",
      "displayName": "Ryan Gregg"
    }
  }
}

共有アイテムに直接アクセスする

SharedDriveItem には便利な情報がいくつか含まれていますが、ほとんどのアプリでは共有 DriveItem に直接アクセスする必要があります。 SharedDriveItem リソースには、共有アイテムのスコープ内のコンテンツにアクセスできるルートとアイテムのリレーションシップが含まれています。

例 (単一ファイル)

要求

driveItem リレーションシップを要求することで、共有されている DriveItem が返されます。

GET /shares/{shareIdOrUrl}/driveItem

応答

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

{
  "id": "9FFFDB3C-5B87-4062-9606-1B008CA88E44",
  "name": "contoso project.docx",
  "eTag": "2246BD2D-7811-4660-BD0F-1CF36133677B,1",
  "file": {},
  "size": 109112
}

例 (共有フォルダー)

要求

driveItem リレーションシップを要求して、children コレクションを展開することで、共有されている DriveItem が共有フォルダー内のファイルとともに返されます。

GET /shares/{shareIdOrUrl}/driveItem?$expand=children

応答

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

{
  "id": "9FFFDB3C-5B87-4062-9606-1B008CA88E44",
  "name": "Contoso Project",
  "eTag": "2246BD2D-7811-4660-BD0F-1CF36133677B,1",
  "folder": {},
  "size": 10911212,
  "children": [
    {
      "id": "AFBBDD79-868E-452D-AD4D-24697D4A4044",
      "name": "Propsoal.docx",
      "file": {},
      "size": 19001
    },
    {
      "id": "A91FE90A-2F2C-4EE6-B412-C4FFBA3F71A6",
      "name": "Update to Proposal.docx",
      "file": {},
      "size": 91001
    }
  ]
}

エラー応答

エラーがどのような形で返されるかについては、「エラー応答」を参照してください。

備考

  • OneDrive for Business と SharePoint の場合、Shares API には常に認証が必要です。また、ユーザー コンテキストを使用せずに、匿名で共有コンテンツにアクセスするためには使用できません。