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

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

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

来张结构图看得更直观一些。
用 PHP 连接上 Office 365 REST API 进行操作入门_第1张图片

微软官方 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 的开源项目 绝对是一个好的参考。

你可能感兴趣的:(PHP,moodle,azure,Office-365,rest-api)