Ошибка загрузки файла с использованием MSGraph в бизнес-аккаунт onedrive - PullRequest
0 голосов
/ 24 мая 2019

Я использую Microsoft graph для создания веб-приложения, которое загружает файлы в OneDrive.Загрузка файла использует сеанс загрузки.https://docs.microsoft.com/ja-jp/graph/api/driveitem-createuploadsession?view=graph-rest-1.0

загрузка файла завершается неудачно, если целевой учетной записью для загрузки является бизнес-учетная запись.Возникает ошибка: {" error ": {" innerError ": {" code ":" invalidToken "}," code ":" unauthenticated "," message ":" This access token is not valid on this endpoint. "}}.

. Однако, она будет успешной, если адресат загрузки - это личный аккаунт. Кстати, простая загрузка будет успешной как для бизнеса, так и для личного пользователя.Знаете ли вы, есть ли какие-либо меры?

Ниже описана процедура загрузки.
(1)

POST /me/drive/root:/sample.txt:/createUploadSession
Authorization: Bearer {bearer token}
Content-Type: application/json
{
  "item": {
    "@microsoft.graph.conflictBehavior": "rename",
    "name": "sample.txt"
  }
}

(2) ответ

HTTP/1.1 200 OK
Content-Type: application/json

{
  "uploadUrl": "https://our-tenant-my.sharepoint.com/personal/our_tenant_onmicrosoft_com/_api/v2.0/drive/items/aaaa/uploadSession?guid='example'&path='example'&overwrite=False&rename=True&dc=0&tempauth=example",
  "expirationDateTime": "2019-05-24T05:07:08.728Z"
}

(3) Загрузка байтов в сеанс загрузки

PUT https://our-tenant-my.sharepoint.com/personal/our_tenant_onmicrosoft_com/_api/v2.0/drive/items/aaaa/uploadSession?guid='example'&path='example'&overwrite=False&rename=True&dc=0&tempauth=example

(4) ошибка возврата

HTTP/1.1 401
{"error":{"innerError":{"code":"invalidToken"},"code":"unauthenticated","message":"This access token is not valid on this endpoint."}}

Кстати, в случае личной учетной записи uploadUrl ответа составляет

https://api.onedrive.com/rup/example/more~~~

Вернется.
Я могу загрузить с этим путем.UploadUrl отличается в личном и служебном аккаунте, связано ли это с этой ошибкой?Есть ли способ решить эту проблему?

Ответы [ 2 ]

1 голос
/ 24 мая 2019

При использовании PUT не отправляйте токен, он там не принимается.

Включение заголовка авторизации при выполнении вызова PUT может привести к неавторизованному ответу HTTP 401.

Заголовок авторизации и маркер канала-носителя должны отправляться только при выдаче POST на первом этапе. Не следует включать при выдаче PUT.

0 голосов
/ 28 мая 2019

Эта проблема была решена. Причина в том, что HTTP-клиент веб-приложения переставил параметр запроса URL-адреса. Я использовал фарадей Ruby on Rails, поэтому я изменил это.

...