Я пытаюсь получить постоянную общедоступную ссылку для загрузки файла OneDrive с помощью Microsoft Graph API.Цель состоит в том, чтобы на моем веб-сайте было <img src="DOWNLOAD_LINK">
, а файл образа OneDrive работает для любого пользователя, просматривающего страницу.
В настоящее время я пробовал следующие вещи:
GET https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png
( doc ), который возвращает
@microsoft.graph.downloadUrl
: публичная ссылка для скачивания, но срок ее действия истекает через 1 час. webUrl
: приватная ссылка для скачивания, требуется аутентификация.
.
POST https://graph.microsoft.com/beta/me/drive/root:/PATH/TO/FILE.png:/createLink
(
doc ) с телом JSON
{
"type": "view",
"scope": "anonymous"
}
, который возвращает
link.webUrl
: публичная ссылка, но нессылка для скачивания.Вместо этого он открывает файл в средстве просмотра файлов OneDrive (которое я затем не могу использовать / вставлять в HTML).
.
https://stackoverflow.com/a/37951378/2219407
Использование предыдущего link.webUrl
для создания URL-адреса для загрузки ( doc ):
$linkWebUrl = "https://domain-my.sharepoint.com/:i:/g/personal/username_domain/RANDOMTOKEN";
$b64 = base64_encode($linkWebUrl);
$b64 = trim($b64, "=");
$b64 = str_replace("/", "_", $b64);
$b64 = str_replace("+", "-", $b64);
$url = "https://api.onedrive.com/v1.0/shares/u!" . $b64 . "/root/content";
но он возвращает
{"error":{"code":"invalidRequest","message":"Invalid shares key."}}
Я думаю, это потому, что я смешиваю API Graph и OneDrive, чтобы он не распознал ключ?Замена api.onedrive.com
на graph.microsoft.com
также не работает, так как Graph требует обычный заголовок авторизации.
Кто-нибудь знает что-нибудь, что работает?