Когда дело доходит до адресации ресурса по Url в OneDrive API, shares
конечная точка приходит на помощь.В этом случае процесс загрузки файла по полному URL-адресу может состоять из следующих шагов:
- Первым шагом будет преобразование URL-адреса в токен общего доступа (см. Раздел ниже).), поэтому мы используем
shares
конечную точку - после того, как генерируется токен общего доступа, запрос API OneDrive на скачивание файла может быть сконструирован следующим образом:
/shares/{shareIdOrEncodedSharingUrl}/driveitem/content
Пример
const string fileFullUrl = "https://contoso-my.sharepoint.com/personal/jdoe_contoso_onmicrosoft_com/documents/sample.docx";
var sharedItemId = UrlToSharingToken(fileFullUrl);
var requestUrl = $"{graphClient.BaseUrl}/shares/{sharedItemId}/driveitem/content";
var message = new HttpRequestMessage(HttpMethod.Get, requestUrl);
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(message);
var response = await graphClient.HttpProvider.SendAsync(message);
var bytesContent = await response.Content.ReadAsByteArrayAsync();
System.IO.File.WriteAllBytes("sample.docx", bytesContent); //save into local file
Как преобразовать URL-адрес в токен общего доступа
В следующем фрагменте показано, как преобразовать URL-адрес в токен общего доступа(адаптировано с здесь )
static string UrlToSharingToken(string inputUrl)
{
var base64Value = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(inputUrl));
return "u!" + base64Value.TrimEnd('=').Replace('/', '_').Replace('+', '-');
}