OneDrive API エンドポイントの相違点
OneDrive API は、複数の異なる API エンドポイントから利用できます。 Microsoft Graph は、OneDrive 個人用、OneDrive for Business、および SharePoint Online のファイルにアクセスする際に優先されるエンドポイントです。 SharePoint Server 2016 などの一部のエンタープライズ シナリオでは、Microsoft Graph を使用するのではなく、ダイレクト API エンドポイントを使用して、OneDrive for Business と SharePoint のデータにアクセスすることが必要になる場合があります。 次に示す注意事項では、Microsoft Graph とダイレクト API エンドポイントとの相違点の詳細について説明します。
相違点:
名前空間
メソッド
ダイレクト エンドポイントを使用するときには、メソッドとアクションに名前空間のプレフィックスが必要になります。
たとえば、ダイレクト エンドポイントの sharedWithMe
を使用する場合は、アクション名に oneDrive.
のプレフィックスが必要になります。
このプレフィックスは、大文字と小文字が区別される点に注意してください。
https://{server}/_api/v2.0/drive/oneDrive.sharedWithMe
次に示すアクションまたはメソッドは、ダイレクト エンドポイントに対してプレフィックスが必要になります。
インスタンス注釈
アット マーク (@
) 付きで返されるアイテムのプロパティにも名前空間が含まれます。
Microsoft Graph を使用する場合、名前空間は常に microsoft.graph
になります。
ただし、ダイレクト API エンドポイントにアクセスする際には、名前空間が異なります。
文書化されたプロパティ名 (Microsoft Graph) | ダイレクト API プロパティ名 |
---|---|
@microsoft.graph.downloadUrl |
@content.downloadUrl |
@microsoft.graph.sourceUrl |
@content.sourceUrl |
@microsoft.graph.conflictBehavior |
@name.conflictBehavior |
プロパティ名
リソースの一部のプロパティ名は、Microsoft Graph から返されるときに変更されます。 次の表に、Microsoft Graph と OneDrive API の間で異なるリソースとプロパティの名前を示します。
文書化されたプロパティ名 (Microsoft Graph) | ダイレクト API プロパティ名 |
---|---|
folder.view | folder.folderView |
エンドポイントの探索
Microsoft Graph では、コンシューマー アカウントおよび職場/学校アカウントに向けて、単一の API エンドポイント graph.microsoft.com
を提供しています。
OneDrive API を直接使用する場合は、適切な OneDrive API エンドポイントを探索する必要があります。
OneDrive API の適切なエンドポイントを探索するには、Microsoft Graph を使用する必要があります。
OneDrive 個人用アカウント
OneDrive 個人用の OneDrive API にアクセスする場合、アプリでは、すべての要求に対して https://api.onedrive.com/v1.0
エンドポイントを使用する必要があります。
サインインしているユーザーが OneDrive 個人用ユーザーかどうかは、id_token
の tid: 9188040d-6c67-4c5b-b112-36a304b66dad
をチェックすることで判断できます。
これに関する詳細については、Active Directory v2 プロトコルのトピックを参照してください。
OneDrive for Business と SharePoint
OneDrive for Business のダイレクト API エンドポイントにアクセスする場合、アプリでは、最初にユーザーの個人用サイトの URL を探索する必要があります。 次のようにすると、この情報を返す Microsoft Graph に要求を送信できます。
GET https://graph.microsoft.com/v1.0/me?$select=mySite
HTTP/1.1 200 OK
Content-Type: application/json
{
"mySite": "https://contoso-my.sharepoint.com/personal/rgregg_contoso_com/"
}
その次に、この URL に OneDrive API の API パス _api/v2.0/
を追加して、API エンドポイントを作成します。
var apiEndPoint = response.mySite + '_api/v2.0';
職場/学校のユーザーの場合は、mySite
の値が返されないことがあります。
これは、それらのユーザーが、まだ OneDrive for Business のアカウントを作成していない場合に発生します。
このシナリオでは、アプリはユーザーの OneDrive をプロビジョニングするために Microsoft Graph を使用する必要があり、そのために、Microsoft Graph からドライブのルート フォルダーを要求します。
アクセス許可
SharePoint および OneDrive for Business に対する呼び出しの場合、Office 365 SharePoint Online サービスを通じて Azure Portal を使用して、アプリケーションにこれらのアクセス許可スコープを割り当てることができます。 OneDrive 個人用の場合、スコープ文字列は OAuth ワークフローに直接渡されるため、事前に登録する必要はありません。
Microsoft Graph のアクセス許可 | OneDrive 個人用 | SharePoint および OneDrive for Business |
---|---|---|
Files.Read | OneDrive.Read | MyFiles.Read |
Files.ReadWrite | OneDrive.ReadWrite | MyFiles.Write |
Files.ReadWrite.All | OneDrive.ReadWrite | Files.ReadWrite.All |
Files.ReadWrite.AppFolder | OneDrive.AppFolder | Files.ReadWrite (Files.ReadWrite.AppFolder は現在サポートされていません |
Sites.Read.All | 該当なし | Sites.Read.All |
Sites.ReadWrite.All | 該当なし | Sites.ReadWrite.All |