访问共享 DriveItem
本文内容
命名空间:microsoft.graph
通过使用 shareId 或共享 URL 访问共享 DriveItem 或共享项目集合。
要与此 API 一起使用共享 URL,应用需要将此 URL 转换为共享令牌 。
权限
要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限 。
权限类型
权限(从最低特权到最高特权)
委派(工作或学校帐户)
Files.ReadWrite、Files.ReadWrite.All、Sites.ReadWrite.All
委派(个人 Microsoft 帐户)
Files.ReadWrite、Files.ReadWrite.All
应用程序
Files.ReadWrite.All、Sites.ReadWrite.All
HTTP 请求
GET /shares/{shareIdOrEncodedSharingUrl}
路径参数
参数名称
值
说明
shareIdOrEncodedSharingUrl
string
必需。 API 返回的共享令牌或正确编码的共享 URL。
编码共享 URL
若要编码共享 URL,请使用以下逻辑:
首先,使用 base64 编码 URL。
删除值末尾的 = 字符,将 / 替换成 _,将 + 替换成 -,从而将 base64 编码结果转换成未填充的 base64url 格式 。
将 u! 追加到字符串的开头。
例如,若要对 URL 进行 C# 编码,请使用以下代码:
string sharingUrl = "https://onedrive.live.com/redir?resid=1231244193912!12&authKey=1201919!12921!1";
string base64Value = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sharingUrl));
string encodedUrl = "u!" + base64Value.TrimEnd('=').Replace('/','_').Replace('+','-');
名称
类型
说明
Prefer
string
可选。 设置为下面所述的 prefer 值之一。
名称
说明
redeemSharingLink
如果 shareIdOrEncodedSharingUrl 是共享链接,请授予调用方对该项目的持久访问权限
redeemSharingLinkIfNecessary
与 redeemSharingLink 相同,但仅保证在此请求的持续时间内授予访问权限
redeemSharingLink 应被视为等效于导航到浏览器 (接受共享手势) 的共享链接的调用方,而 redeemSharingLinkIfNecessary 则适用于意图只是查看链接的元数据的情况。
响应
如果成功,此方法在响应正文中返回 200 OK 响应代码和 sharedDriveItem 资源。
示例
请求
下面是一个请求检索共享项目的示例:
GET /shares/{shareIdOrEncodedSharingUrl}
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var sharedDriveItem = await graphClient.Shares["{sharedDriveItem-id}"]
.Request()
.GetAsync();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
const options = {
authProvider,
};
const client = Client.init(options);
let sharedDriveItem = await client.api('/shares/{shareIdOrEncodedSharingUrl}')
.get();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/shares/{shareIdOrEncodedSharingUrl}"]]];
[urlRequest setHTTPMethod:@"GET"];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
MSGraphSharedDriveItem *sharedDriveItem = [[MSGraphSharedDriveItem alloc] initWithData:data error:&nserror];
}];
[meDataTask execute];
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
SharedDriveItem sharedDriveItem = graphClient.shares("{shareIdOrEncodedSharingUrl}")
.buildRequest()
.get();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
sharedDriveItemId := "sharedDriveItem-id"
result, err := graphClient.SharesById(&sharedDriveItemId).Get()
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
Import-Module Microsoft.Graph.Files
Get-MgShareSharedDriveItemSharedDriveItem -SharedDriveItemId $sharedDriveItemId
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
响应
下面是一个响应示例。
HTTP/1.1 200 OK
Content-type: application/json
{
"id": "B64397C8-07AE-43E4-920E-32BFB4331A5B",
"name": "contoso project.docx",
"owner": {
"user": {
"id": "98E88F1C-F8DC-47CC-A406-C090248B30E5",
"displayName": "Ryan Gregg"
}
}
}
直接访问共享项目
虽然 SharedDriveItem 包含一些有用的信息,但大多数应用程序都需要直接访问共享 DriveItem 。SharedDriveItem 资源包括 根 和 项目 关系,这些关系可以访问共享项目范围内的内容。
示例(单个文件)
请求
通过请求 driveItem 关系,将返回共享的 DriveItem 。
GET /shares/{shareIdOrUrl}/driveItem
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var driveItem = await graphClient.Shares["{sharedDriveItem-id}"].DriveItem
.Request()
.GetAsync();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
const options = {
authProvider,
};
const client = Client.init(options);
let driveItem = await client.api('/shares/{shareIdOrUrl}/driveItem')
.get();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/shares/{shareIdOrUrl}/driveItem"]]];
[urlRequest setHTTPMethod:@"GET"];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
MSGraphDriveItem *driveItem = [[MSGraphDriveItem alloc] initWithData:data error:&nserror];
}];
[meDataTask execute];
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
DriveItem driveItem = graphClient.shares("{shareIdOrUrl}").driveItem()
.buildRequest()
.get();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
sharedDriveItemId := "sharedDriveItem-id"
result, err := graphClient.SharesById(&sharedDriveItemId).DriveItem().Get()
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "9FFFDB3C-5B87-4062-9606-1B008CA88E44",
"name": "contoso project.docx",
"eTag": "2246BD2D-7811-4660-BD0F-1CF36133677B,1",
"file": {},
"size": 109112
}
示例(共享文件夹)
请求
通过请求 driveItem 关系并展开 子 集合,将同时返回共享的 DriveItem 以及共享文件夹内的文件。
GET /shares/{shareIdOrUrl}/driveItem?$expand=children
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var driveItem = await graphClient.Shares["{sharedDriveItem-id}"].DriveItem
.Request()
.Expand("children")
.GetAsync();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
const options = {
authProvider,
};
const client = Client.init(options);
let driveItem = await client.api('/shares/{shareIdOrUrl}/driveItem')
.expand('children')
.get();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
MSHTTPClient *httpClient = [MSClientFactory createHTTPClientWithAuthenticationProvider:authenticationProvider];
NSString *MSGraphBaseURL = @"https://graph.microsoft.com/v1.0/";
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[MSGraphBaseURL stringByAppendingString:@"/shares/{shareIdOrUrl}/driveItem?$expand=children"]]];
[urlRequest setHTTPMethod:@"GET"];
MSURLSessionDataTask *meDataTask = [httpClient dataTaskWithRequest:urlRequest
completionHandler: ^(NSData *data, NSURLResponse *response, NSError *nserror) {
MSGraphDriveItem *driveItem = [[MSGraphDriveItem alloc] initWithData:data error:&nserror];
}];
[meDataTask execute];
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient();
DriveItem driveItem = graphClient.shares("{shareIdOrUrl}").driveItem()
.buildRequest()
.expand("children")
.get();
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
//THE GO SDK IS IN PREVIEW. NON-PRODUCTION USE ONLY
graphClient := msgraphsdk.NewGraphServiceClient(requestAdapter)
requestParameters := &msgraphsdk.DriveItemRequestBuilderGetQueryParameters{
Expand: "children",
}
options := &msgraphsdk.DriveItemRequestBuilderGetRequestConfiguration{
QueryParameters: requestParameters,
}
sharedDriveItemId := "sharedDriveItem-id"
result, err := graphClient.SharesById(&sharedDriveItemId).DriveItem().GetWithRequestConfigurationAndResponseHandler(options, nil)
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
Import-Module Microsoft.Graph.Files
Get-MgShareDriveItem -SharedDriveItemId $sharedDriveItemId -ExpandProperty "children"
有关如何将 SDK 添加 到项目并 创建 authProvider 实例的 详细信息,请参阅 SDK 文档 。
响应
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "9FFFDB3C-5B87-4062-9606-1B008CA88E44",
"name": "Contoso Project",
"eTag": "2246BD2D-7811-4660-BD0F-1CF36133677B,1",
"folder": {},
"size": 10911212,
"children": [
{
"id": "AFBBDD79-868E-452D-AD4D-24697D4A4044",
"name": "Propsoal.docx",
"file": {},
"size": 19001
},
{
"id": "A91FE90A-2F2C-4EE6-B412-C4FFBA3F71A6",
"name": "Update to Proposal.docx",
"file": {},
"size": 91001
}
]
}
错误响应
请阅读 错误响应 主题,了解有关如何返回错误的详细信息。
对于 OneDrive for Business 和 SharePoint,共享 API 始终要求进行身份验证,无法用于在没有用户上下文的情况下访问匿名共享内容。