在多地理位置租户中访问 Onedrive for Business

访问用户的 OneDrive for Business 网站(亦称为“个人网站”或“我的网站”)是自定义应用程序中的常见方案。 本文介绍了如何在多地理位置租户中使用 OneDrive for Business 网站。

可以使用下面的其中一个 API 访问 OneDrive for Business 网站:

  • Microsoft Graph API(首选)
  • SharePoint CSOM API
  • SharePoint REST API

使用 Microsoft Graph 读取 OneDrive for Business 文件

使用 Microsoft Graph 读取 OneDrive for Business 文件时,无需知道用户 OneDrive 网站位置。 当请求获取驱动器时,如下例所示,你将获得所需的文件。

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#,可以使用 CSOM 来获取 OneDrive for Business 网站位置。

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;
}

另请参阅