繁体   English   中英

PHP 中的 Office 365 api

[英]Office 365 api in PHP

我正在尝试为我的公司制作日历视图以显示哪些员工可用。 我在 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~"
}

我得到的回应是:“”

我究竟做错了什么?

更新

登录后,Microsoft 不会询问我是否要授予对应用程序的访问权限,但它会授予我访问令牌。 这可能是问题吗? 我怎样才能让它请求许可?

更新 2

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

更新 3

再过几天,我尝试了一些示例和教程代码来检查它是否有效。 但即使在这些应用程序中,api 似乎也不起作用。 这些是我尝试过的项目。

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

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

根据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 calendars权限或Read user calendars Microsoft Graph的 Read user calendars是否已标记。

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

问题很老,但我会发布对我有用的解决方案。

与您类似,我努力设置 php 客户端以与 Office365 (Sharepoint) 一起使用。 官方文档缺少示例(卷发/请求/响应等),因此很难设置自定义客户端。

最后我找到了这个库: https : //github.com/vgrem/phpSPO - 使用它我设法通过 PHP 进行身份验证并在 Sharepoint 中执行我需要的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM