我有一个微软的商业帐户,并希望在其中存储上传的用户文件 . 我的目标是我的PHP应用程序的用户可以管理文件,上传文件,创建文件夹等到oneDrive for business . 它可能吗?
我已经用de microsoft商业帐户注册了php应用程序,我有客户端ID和密码 .
例如:client_id:'XXXX'
现在我用我的个人帐户进行测试 . 我使用企业帐户的密码和客户端ID获取访问令牌,并使用我的个人微软帐户进行身份验证 .
我用来验证的步骤是:
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以获取业务文件/文件夹等等吗?怎么样?我必须使用哪个 endpoints ?
例如,用于访问驱动器:
https://graph.microsoft.com/v1.0/me/drive/root/children
me 参数是个人帐户还是商务帐户驱动器?
我正在使用这些库来实现我的目标:
-
将用户帐户连接到Microsoft Graph Auth2 => https://github.com/microsoftgraph/php-connect-rest-sample
-
请求api资源https://github.com/microsoftgraph/msgraph-sdk-php/wiki/Example-calls
1 回答
https://graph.microsoft.com/v1.0/me endpoints 将为您提供已登录用户的详细信息 . 它应该为您提供Azure对象ID和UPN等信息 . / drive指向个人或业务驱动器,具体取决于您在身份验证期间使用哪个帐户来获取访问令牌 . 如果你打电话给/ drive,它也会告诉你你要查询的驱动器类型 . 因此,OneDrive for business将具有driveType = "business",OneDrive个人将说driveType = "personal" . 我很高兴看到您正在使用AAD v2.0 endpoints ,因为它支持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