在多地理位置租户中访问 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;
}