Share via


複数地域テナントで OneDrive for Business にアクセスする

ユーザーの OneDrive for Business サイト (個人用サイト) へのアクセスは、カスタム アプリケーションで普通にみられるシナリオです。 この記事では、複数地域テナントで OneDrive for Business サイトを扱う方法について説明します。

OneDrive for Business サイトにアクセスするには、次の API のいずれかを使用します。

  • Microsoft Graph API (推奨)
  • SharePoint CSOM API
  • SharePoint REST API

Microsoft Graph を使用して OneDrive for Business のファイルを読み込む

Microsoft Graph を使用して OneDrive for Business のファイルを読み込む場合は、ユーザーの One Drive サイトの場所を知る必要はありません。 次の例のように、ドライブを要求すると、必要なファイルが表示されます。

GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com/drive/root/children

GET https://graph.microsoft.com/v1.0/users/me/drive/root/children

CSOM と REST を使用して OneDrive for Business のファイルを読み込む

CSOM を使用することによるファイルの読み取りは、他のサイト コレクション上のファイルの読み取りと同じです。OneDrive for Business サイトは、ファイルを含むドキュメント ライブラリを備えた正規の SharePoint サイト コレクションです。 CSOM と REST を使用したファイル アップロードのサンプルは、「関連項目」を参照してください。

Microsoft Graph を使用してユーザーの OneDrive for Business サイトの場所を取得する

次の例では、Microsoft Graph API を使用することにより、OneDrive for Business サイトの場所を取得する方法を示します。

GET https://graph.microsoft.com/v1.0/users/admin@contoso.onmicrosoft.com/mySite

GET https://graph.microsoft.com/v1.0/me/mySite

Microsoft Graph を使用したユーザーのOneDrive for Business サイトの場所に対する応答の例

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('admin@contoso.onmicrosoft.com')/mySite",
    "value": "https://contoso-my.sharepoint.com/personal/admin_contoso_onmicrosoft_com/"
}

詳細については、MultiGeo.UserProfileUpdates のサンプルを参照してください。

CSOM と REST を使用してユーザーの OneDrive for Business サイトの場所を取得する

次の例では、OneDrive for Business サイトの場所を取得するための REST ベースのクエリを示します。

GET https://contoso.sharepoint.com/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)/PersonalUrl?%40v=%27i%3A0%23.f%7Cmembership%7Cbert%40contoso.onmicrosoft.com%27

REST を使用したユーザーのOneDrive for Business サイトの場所に対する応答の例

{
    "d":{
        "PersonalUrl":"https://contoso-my.sharepoint.com/personal/admin_contoso_onmicrosoft_com/"
        }
}

C# を使用している場合は、OneDrive for Business サイトの場所を取得するために CSOM を使用できます。

public string GetUserPersonalUrlCSOM(ClientContext ctx, string userPrincipalName)
{
  string result = null;

  PeopleManager peopleManager = new PeopleManager(ctx);
  var userProperties = peopleManager.GetPropertiesFor(userPrincipalName);
  this.clientContext.ExecuteQuery();
  result = userProperties.PersonalUrl;

  return result;
}

関連項目