PHP中的Office 365 API

ape*_*ero 9 php azure office365 office365api

我正在尝试为我的公司制作日历视图,以显示哪些员工可用.我在Azure中创建了一个应用程序,我可以登录到系统,我获得了一个访问令牌,但我无法获取信息.

我使用curl构建请求url并使用我的请求发送此标头

array(6) {
 [0]=>
  string(28) "User-Agent: php-tutorial/1.0"
  [1]=>
  string(588) "Authorization: Bearer ~ACCESS_TOKEN~"
  [2]=>
  string(24) "Accept: application/json"
  [3]=>
  string(55) "client-request-id: ~GUID~"
  [4]=>
  string(30) "return-client-request-id: true"
  [5]=>
  string(45) "X-AnchorMailbox: ~MAIL~"
}
Run Code Online (Sandbox Code Playgroud)

而我得到的回应是:""

我究竟做错了什么?

UPDATE

登录后,Microsoft不会询问我是否要授予对该应用程序的访问权限,但它确实授予了我访问令牌的权限.这可能是问题吗?我怎样才能让它获得许可?

更新2

登录并尝试获取信息后,我收到401错误说:访问被拒绝.我认为这很奇怪,因为它已经授予了我一个访问令牌.

更新3

几天后,我尝试了一些示例和教程代码来检查它是否有效.但即使在这些应用程序中,api似乎也无法运行.这些是我尝试过的项目.

https://github.com/microsoftgraph/php-connect-rest-sample

https://dev.outlook.com/restapi/tutorial/php

Gar*_*SFT 6

根据https://graph.microsoft.io/en-us/docs/overview/errors上的错误列表,当您收到401错误时,表示

所需的身份验证信息丢失或对资源无效.

可能是您的访问令牌不包含应用程序请求的资源的范围.例如

如果要列出日历视图的资源,请根据https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/user_list_calendarview上的文档:

其中以下范围的被执行该API要求:Calendars.Read;Calendars.ReadWrite

请登录您的Azure的AD应用程序的入口,检查权限Have full access to user calendarsRead user calendars微软图形是否已被标记.

您可以使用访问令牌检查响应正文的"范围"部分,请参阅https://azure.microsoft.com/en-us/documentation/articles/active-directory-protocols-oauth-code/#use -the-authorization-code-to-request-an-access-token获取更多信息.