共有 DriveItems へのアクセス

名前空間: microsoft.graph

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}

パス パラメーター

パラメーター名 説明
Sharingidorencodedsharingurl 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('+','-');

オプションの要求ヘッダー

名前 説明
Prefer string 省略可能。 以下に記載されている値の1つに設定 prefer します。

ヘッダー値を優先する

名前 説明
redeemSharingLink 共有リンクの 場合は、 発信者に、アイテムへの永続的なアクセス権を付与します。
redeemSharingLinkIfNecessary RedeemSharingLink と同じですが、この要求の期間だけアクセスが許可されることが保証されます。

redeemSharingLink は、発信者と同等であると考えて、共有リンクに移動します (共有ジェスチャを受け入れます)。 redeemSharingLinkIfNecessary は、リンクのメタデータを単にピークすることを目的としたシナリオに対して使用されます。

応答

成功した場合、このメソッドは 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 リソースには、共有アイテムのスコープ内でコンテンツにアクセスできる、 rootitems のリレーションシップが含まれています。

例 (単一ファイル)

要求

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 には常に認証が必要です。また、ユーザー コンテキストを使用せずに、匿名で共有コンテンツにアクセスするためには使用できません。