用 PHP 连接上 Office 365 REST API 进行操作入门

来源:互联网 发布:cdrx7软件下载 编辑:程序博客网 时间:2024/05/19 14:15

Office 365 简单说就是云中的 Office,是能够提供最佳生产力和高效协同的高端云服务,是微软公司基于云平台的应用套件。 Office 365 REST API 包含了对以下数据的操作:

  • Exchange Online 的邮件(Mail)、日历(Calendar)、联系人(Contact)
  • SharePoint Online 和 OneDrive for Business 的文件和文件夹
  • Azure 活动目录(Active Directory)的用户和用户组

来张结构图看得更直观一些。
Office 365 Architecture

微软官方 Office 365 REST API 文档

在中国大陆地区的 Office 365 是由21世纪互联来运营的,所以在中国使用的 API 接口地址也是和全世界其它地域不一样的。 这个文档记录了所有 Office 365 在国内和国外所使用的 REST API 接口地址。

接下去我会用到微软开放技术的一个开源项目来作为例子,简单介绍一下如何用 PHP 来对 Office 365 REST API 进行操作。 在这个项目里,Office 365 的 API 已插件的形式被接到 Moodle 上。 这样一来,用户可以实现 Moodle 和 Office 365 之间的数据互通,做到实时数据同步。


Single Sign-On

实现与 Office 365 的单点登录可以通过以下几个方法:

  • Active Directory 联合身份验证服务(ADFS)
  • Shibboleth 标识提供程序
  • SAML 2.0 标识提供程序
  • 批准的第三方标识提供程序

HTTP Client

定义专用于连接 Office 365 REST API 的 HTTP client 对象 httpclient(继承自 Curl),支持 get、post、put、patch、merge、delete 的操作。


Calendar

定义对 Calendar REST API 操作的对象 calendar(继承自 o365api)。 在 Moodle 的使用场景中,用户需要将 Moodle 事件实时同步至 Office 365 日历上。

创建新的事件 POST 以下数据至
https://partner.outlook.cn/api/v1.0/me/events

{  "Subject": "新建事件的标题",  "Body": {    "ContentType": "HTML",    "Content": "新建事件的内容"  },  "Start": "2014-07-02T18:00:00Z",  "End": "2014-07-02T19:00:00Z",  "Attendees": [    {      "EmailAddress": {        "Address": "用户登陆邮箱地址",        "Name": "用户姓名"      },      "Type": "Required"    }  ],  "StartTimeZone": "Pacific Standard Time",  "EndTimeZone": "Pacific Standard Time"}

更新现有的事件 PATCH 以下数据(只包含被更新的内容)至
https://partner.outlook.cn/api/v1.0/me/events/{event_id}

{  "Location": {    "DisplayName": "更新的事件地点"  }}

删除现有的事件发送 DELETE 至
https://partner.outlook.cn/api/v1.0/me/events/{event_id}

有关更多的操所,请参考 Calendar REST API 操作的详细文档。


OneDrive for Business

定义对 Files REST API 操作的对象 onedrive(继承自 o365api)。 在 Moodle 的使用场景中,用户需要访问在 OneDrive 云存储上的文件。

创建新的文件 PUT 文件数据至
https://{tenant}-my.partner.sharepoint.cn/_api/v1.0/me/Files/{parent-id}/children/{file-name}/content
请参考 httpclient 里的 put() 函数对处理新建文件的逻辑。

获取文件夹内容发送 GET 至
https://{tenant}-my.partner.sharepoint.cn/_api/v1.0/me/Files/getByPath('{folder-path}')/children

获取文件可以使用绝对路径或者文件 ID,发送 GET 至
https://{tenant}-my.partner.sharepoint.cn/_api/v1.0/me/Files/getByPath('{file-path}')/content
https://{tenant}-my.partner.sharepoint.cn/_api/v1.0/me/Files/{file-id}/content

有关更多的操所,请参考 Files REST API 操作的详细文档。


这篇博客写得比较仓促,还有很多有关 Office 365 REST API 的操作没有提到,以后会慢慢补上。 作为学习目的,这个用 PHP 写的 Moodle 集成 Office 365 的开源项目 绝对是一个好的参考。

0 0
原创粉丝点击