API Microsoft Graph — генерируется ошибка 401, несмотря на то, что токен доступа в порядке — с использованием PHPPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 API Microsoft Graph — генерируется ошибка 401, несмотря на то, что токен доступа в порядке — с использованием PHP

Сообщение Anonymous »

По сути, когда я звоню, чтобы попытаться получить документ из SharePoint через его URL-адрес, я вижу код 401, который я также вижу, если я беру токен доступа и использую его, например, в Postman.
/>У меня есть простое приложение, которое я разрабатываю для проверки концепции. первая часть рекурсивно считывает структуру Sharepoint и сохраняет в базе данных имя папки/имя файла/размер файла/url. Это работает блестяще. Чтобы это работало, я зарегистрировал «приложение» в Azure и поместил соответствующие идентификаторы в файл конфигурации:

Код: Выделить всё

SHAREPOINT_TENANT_ID="f5323574-......"
SHAREPOINT_CLIENT_ID="6718dcf4......."
SHAREPOINT_CLIENT_SECRET="_HG8Q......"
SHAREPOINT_TOP_DRIVE_ID="b!UKVJ......"
Затем код начинается с получения токена доступа от MS Graph, а затем отправляет его с каждым последующим запросом. Структура данных, возвращаемых каждым вызовом (когда файл найден), содержит эти элементы данных (среди прочих)

Код: Выделить всё

            $credate = $v['createdDateTime'];
$updatedate = $v['lastModifiedDateTime'];
$size = $v['size'];
$name = $v['name'];
$url = $v['webUrl'];
$urlSession = $v['@microsoft.graph.downloadUrl'];
Теперь — на этом этапе переменная $urlSession может использоваться в запросе GET для получения содержимого указанного документа — и она работает безупречно. Однако (насколько я понимаю) @microsoft.graph.downloadUrl действителен только для сеанса, а «постоянный» URL-адрес хранится в элементе webUrl – и именно его мы сохраняем в нашу базу данных.
Пока все хорошо.
Вторая часть: моя проблема возникает, когда я читаю базу данных и хотите получить доступ к документу через его URL-адрес из Sharepoint. Я использую тот же метод для получения токена доступа, что и в первой части, и (проверив разрешения приложений и т. д. в Azure) все выглядит так, как будто все должно работать нормально - но, конечно, это не так - я получаю 401. Это пример вывода, сгенерированного моим php:

Код: Выделить всё

php sp_get_doc_via_db.php
Decoded JWT Payload:
Array
(
[aud] => https://graph.microsoft.com
[iss] => https://sts.windows.net/f5323574-...../
[iat] => 1721819141
[nbf] => 1721819141
[exp] => 1721823041
[aio] => E2dgYDjxf........
[app_displayname] => HCAT_API
[appid] => 6718dcf........
[appidacr] => 1
[idp] => https://sts.windows.net/f5323574-d811-........./
[idtyp] => app
[oid] => 2b17f89a-407c-............
[rh] => 0.AUcAdD.........
[roles] => Array
(
[0] => Files.ReadWrite.AppFolder
[1] => BrowserSiteLists.Read.All
[2] => Sites.Selected
[3] => Files.SelectedOperations.Selected
[4] => Sites.Read.All
[5] => Sites.ReadWrite.All
[6] => Files.ReadWrite.All
[7] => User.Read.All
[8] => BrowserSiteLists.ReadWrite.All
[9] => Files.Read.All
[10] => FileStorageContainer.Selected
)

[sub] => 2b17f89a........
[tenant_region_scope] => EU
[tid] => f5323574...........
[uti] => L4C7-..........
[ver] => 1.0
[wids] => Array
(
[0] => 0997a1d........
)

[xms_idrel] => 7 20
[xms_tcdt] => 1575971057
)
Token Expiry (exp): 2024-07-24 12:10:41
11:10:42 Request file - CAS Mural.jpg
11:10:42 https://TOPLEVELDOMAIN.sharepoint.com/sites/path/Shared%20Documents/Archive_Catalogue/Catalogue/4%20Sub-Catalogues/casMural.jpg
Failed to download document. HTTP Status Code: 401
Response: 401 UNAUTHORIZED
header: 401 UNAUTHORIZED
body:
Я показываю декодированное содержимое токена, поскольку оно демонстрирует разрешения, предоставленные приложению.
Есть ли у кого-нибудь идеи, что может быть неправильный? За последние дни я несколько раз сталкивался с этой проблемой, и она отнимает у меня слишком много времени!
Я уверен, что ответ будет таким простым, но я не могу придумать, как его найти. .
Мысль: это токен авторизации и нужен ли мне теперь токен доступа? Если это так, то что при этом происходит?
Заранее большое спасибо,
j

Подробнее здесь: https://stackoverflow.com/questions/787 ... ring-to-be
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»