共有 DriveItems へのアクセス
[アーティクル]
05/04/2022
3 人の共同作成者
この記事の内容
名前空間: 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 でエンコードされた結果を unpadded base64url 形式 に変換します (値の末尾から = 文字を削除し、/ を _、+ を - に置き換える)。
文字列の先頭に u! を追加します。
C# で URL をエンコードする例を以下に示します。
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 のドキュメントを参照してください 。
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 のドキュメントを参照してください 。
応答
以下は、応答の例です。
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 リソースには、共有アイテムのスコープ内でコンテンツにアクセスできる、root と items のリレーションシップが含まれています。
例 (単一ファイル)
要求
driveItem リレーションシップを要求することで、共有されている DriveItem が返されます。
GET /shares/{shareIdOrUrl}/driveItem
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var driveItem = await graphClient.Shares["{sharedDriveItem-id}"].DriveItem
.Request()
.GetAsync();
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 リレーションシップを要求して、children コレクションを展開することで、共有されている 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 のドキュメントを参照してください 。
応答
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 の場合、Shares API には常に認証が必要です。また、ユーザー コンテキストを使用せずに、匿名で共有コンテンツにアクセスするためには使用できません。