У меня есть бизнес-аккаунт в Microsoft и я хочу хранить в нем загруженные файлы пользователей.
Моя цель состоит в том, чтобы пользователи моего приложения PHP могли управлять файлами, загружать файлы, создавать папки и т. Д. В oneDrive для бизнеса. это может быть возможно?
Я зарегистрировал приложение php с учетной записью de microsoft business, и у меня есть идентификатор клиента и секрет.
например: client_id: ‘XXXX’
Сейчас я тестирую с моим личным аккаунтом. Я получаю токен доступа с использованием секретного и клиентского идентификатора бизнес-учетной записи и аутентифицируюсь с помощью своей личной учетной записи Microsoft.
Шаги, которые я использую для аутентификации:
GET https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
state=YYYY
&scope=openid+profile+directory.readwrite.all+files.readwrite.all
&response_type=code
&approval_prompt=auto
&client_id=XXXX
&redirect_uri=http%3A%2F%2Flocalhost%2Ftest
В этот момент Microsoft запрашивает форму входа пользователя, я аутентифицировался с моей личной учетной записью.
в URI перенаправления я получаю код de и отправляю запрос POST, чтобы получить токен доступа.
Теперь, на этом этапе и с токеном доступа, могут ли пользователи (в данном случае я) получить доступ к onedrive для бизнес-файлов / папок … и т. Д.? как? Какую конечную точку я должен использовать?
например, для доступа к диску:
https://graph.microsoft.com/v1.0/me/drive/root/children
мне Параметр Личный кабинет или Драйвер бизнес-аккаунта?
Я использую эти библиотеки для достижения своей цели:
подключить учетную запись пользователя к Microsoft Graph Auth2 => https://github.com/microsoftgraph/php-connect-rest-sample
запрос API ресурса
https://github.com/microsoftgraph/msgraph-sdk-php/wiki/Example-calls
https://graph.microsoft.com/v1.0/me конечная точка предоставит вам информацию о зарегистрированном пользователе. Он должен предоставить вам такую информацию, как идентификатор объекта Azure и UPN. / диск указывает на личный или служебный диск, в зависимости от того, какую учетную запись вы использовали во время аутентификации для получения токена доступа. Если вы позвоните в / drive, он также скажет вам, к какому типу дисков вы обращаетесь. Таким образом, OneDrive для бизнеса будет иметь driveType = «business», а OneDrive personal скажет driveType = «personal». Я рад видеть, что вы используете конечную точку AAD v2.0, поскольку она поддерживает аутентификацию для MSA и AAD. Если вы еще этого не сделали, вы можете прочитать об этом здесь:
https://developer.microsoft.com/en-us/graph/docs/authorization/auth_overview
И специально для аутентификации v2.0, попробуйте следующую статью:
https://developer.microsoft.com/en-us/graph/docs/authorization/converged_auth
Других решений пока нет …