複数地域テナントで 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;
}