Я пытаюсь реализовать OneDrive Business API в соответствии с этим Заметки о выпуске OneDrive. Мы уже внедрили API конечных пользователей OneDrive без каких-либо проблем.
Первое очевидное, что нужно сделать, - это обработать аутентификацию OAuth2, чтобы получить правильные жетоны, сначала открыть {tenant} -my.sharepoint.com конкретный идентификатор Tenant OneDrive Business URI и после этого получить токены для этого арендатора. Для этой цели можно было найти здесь.
Следуя этому руководству, мы смогли сделать следующее:
- Зарегистрируйте приложение в Azure AD. Готово
- Войдите в OneDrive для бизнеса
- Войдите и получите код авторизации. Готово
- Выполнить код авторизации для токенов. Готово
- Откройте URI ресурса OneDrive for Business. СБОЙ
- Исключить токен обновления для токена доступа для вызова OneDrive API. Готово
- Сделайте запрос к API OneDrive. СБОЙ
Понятно, что у нас были проблемы на шаге 2, Откройте URI ресурса OneDrive для бизнеса и Сделайте запрос к API OneDrive.
Проблема при обнаружении URI ресурса OneDrive для бизнеса
Проблема с этой частью процесса заключается в том, что мы нажимаем api.office.com/discovery/v2.0/me/services на первый токен доступа, полученный после выкупа с ресурсом api.office.com/discovery/, мы не попадаем в список специализированных URI-приложений для индивидуальных пользователей для OneDrive for Business. Любая запись в списке, который мы получаем, соответствует capability = "MyFiles" AND serviceApiVersion = "v2.0"
в соответствии с документацией. Фактически любая запись в списке имеет структуру {tenant} -my.sharepoint.com в serviceEndpointUri. Это ответ JSON, я возвращаюсь. Я удалил некоторые конфиденциальные данные:
{
"@odata.context" : "https://api.office.com/discovery/v2.0/me/$metadata#allServices",
"value" : [ {
"capability" : "Directory",
"providerName" : "Microsoft",
"serviceAccountType" : 2,
"serviceApiVersion" : "",
"serviceEndpointUri" : "http://azure.microsoft.com/",
"serviceName" : "Microsoft Azure",
"serviceResourceId" : null
}, {
"capability" : "MyFiles",
"providerName" : "Microsoft",
"serviceAccountType" : 2,
"serviceApiVersion" : "",
"serviceEndpointUri" : "http://www.microsoft.com/en-us/office365/online-software.aspx",
"serviceName" : "Office 365 SharePoint",
"serviceResourceId" : null
}, {
"capability" : "RootSite",
"providerName" : "Microsoft",
"serviceAccountType" : 2,
"serviceApiVersion" : "",
"serviceEndpointUri" : "http://www.microsoft.com/en-us/office365/online-software.aspx",
"serviceId" : "O365_SHAREPOINT",
"serviceName" : "Office 365 SharePoint",
"serviceResourceId" : null
}, {
"capability" : "MyFiles",
"providerName" : "Microsoft",
"serviceAccountType" : 1,
"serviceApiVersion" : "",
"serviceEndpointUri" : "https://g.live.com/8seskydrive/HomePageUrl",
"serviceName" : "OneDrive",
"serviceResourceId" : null
} ]
}
Проблема с этим заключается в том, что я вошел в свой портал portal.office.com и проверял мои URL-адреса sharepoint, он хорошо настроен, и я могу видеть {tenant} -my.sharepoint.com URI.
Проблема при выполнении запроса к API OneDrive
Кроме того, я не могу найти правильный идентификатор пользователя sharepoint URI, если я жестко запрограммировал URL-адрес для повторного использования следующего запроса Access Token с моим идентификатором общего ресурса арендатора strong > , я получаю токен доступа, но когда я хочу сделать вызов, например, на https://{tenant}-my.sharepoint.com/drive/root
или любую другую конечную точку, я получаю 401 Unauthorize ответ в каждом вызове, даже когда только что был куплен токен. Вот пример рукопожатия. Я скрываю конфиденциальные данные:
curl -v 'https://{tenant}-my.sharepoint.com/drives' -H 'Authorization: Bearer TOKEN_ACQUIRED'
Connected to {tenant}-my.sharepoint.com port 443
GET /drives HTTP/1.1
Host: {tenant}-my.sharepoint.com
Authorization: Bearer TOKEN_ACQUIRED
HTTP/1.1 401 Unauthorized
Не могли бы вы посоветовать мне это? Есть ли какая-то конфигурация в моем арендаторе? Есть ли какая-то конфигурация, отсутствующая в моем приложении Azure AD?
BTW, область разрешений на моем приложении, я получаю в каждом выкупе AllSites.FullControl AllSites.Manage MyFiles.Write Sites.Search.All TermStore.ReadWrite.All User.Read.All
. Я думаю, что у меня правильно установлены разрешения.
Бест,
Элемент списка