Microsoft Graph 概述

优质
小牛编辑
130浏览
2023-12-01

作者:陈希章 发表于 2017年3月17日

这个系列文章 已经进行到了实质的阶段,继上一篇介绍了如何搭建Office 365开发环境之后,我会通过这篇文章给大家介绍一个非常重要的概念:Microsoft Graph。它之所以重要,首先是因为它是未来Office 365对外的统一接口(甚至可以说是未来微软的云服务的对外统一接口),其次,Microsoft Graph对于不少Office 365开发人员来说是一个需要先跨过的门槛,这个关过去了,后续进行针对性的开发(Office Add-in,SharePoint Add-in,Office 365 Connector等)才更加得心应手。

Microsoft Graph的官方主页在https://developer.microsoft.com/zh-cn/graph/ 在这里也可以找到很多文章。

简单地说,Microsoft Graph是一套接口。它的名字经过了几次改变最终确定为Microsoft Graph,我想大致上是因为产品组确实将其定位于日后微软的云服务对外的统一接口层。Graph这个单词初看容易让人误会,但实际上学过算法的同学应该都知道这是指“图”的意思,而不是图片。

目前Microsoft Graph包含的实体主要有用户,文档,邮件,消息,日历,会议,联系人等等,而且每月都有新的功能在加入进来或者被改进。

目前Microsoft Graph对外的稳定版本是v1 .0,但同时还有一个在不断更新的beta版本。他们的访问地址略有不同,前者为https: //graph.microsoft.com /v1.0/{resource}?[query_parameters] 或者为 https://graph.microsoft.com/beta/{resource}?[query_parameters]

值得注意的是,前不久加入微软大家庭的LinkedIn也有一套所谓的LinkedIn Graph,而且在不久的将来应该会与Microsoft Graph有很好的整合,相信会很有意思。这里有一篇文章对其进行介绍,有兴趣可以移步进行了解。

Microsoft Graph是一套RESTful的接口,所以它的所有接口都是通过标准的http方法(GET, POST, PUT, DELETE)可以直接访问到, 而且还可以通过改变Url的参数来进行筛选、排序、分页等操作,它返回的数据是标准的JSON格式。这种特性决定了Microsoft Graph是跨开发平台支持的。目前官方提供的Code Sample和SDK就有如下的十种之多,但实际上,任何能发起Http请求并且能解析JSON数据的开发平台和语言都能调用Microsoft Graph。

RESTful接口带来了调用的便利性,但与此同时安全的重要性是不言而喻的。Microsoft Graph采用Azure AD作为身份验证的提供方,所有的服务请求在调用之前都必须要取得合法的授权。目前Azure AD支持互联网上最流行的OAuth身份验证方式。关于OAuth,我这里不想详细展开,还不太了解的朋友可以移步这里进行了解。

这里还需要展开一下讲解微软的身份账号系统。在很多企业内部,微软的AD(Active Directory,活动目录)使用相当广泛,它是企业资源的身份账号系统。由于历史的原因,微软在云端的身份账号系统(Azure AD),则一直有两套。一套是所谓的个人账号(也称为Microsoft Account),就是我们常见的hotmail.com,outlook.com这种,你也可以将你自己的邮箱地址注册为Microsoft Account。另外一套就是随着微软成功推出Azure和Office 365等公有云服务,给企业客户提供的工作账号(或学校账号),英文说法是叫Work or School Account。在我们当前讨论的Microsoft Graph开发的上下文中,我们将纯粹面向工作或学校账号的Azure AD 服务端点称为Azure AD 1.0(或者就简称为Azure AD), 而将既支持个人账号也支持企业或学校账号的Azure AD 服务端点称为Azure AD 2.0。

那么怎么声明你的应用程序需要访问哪些Microsoft Graph资源并且得到认证呢?答案是,开发人员需要在Azure AD中对应用程序进行注册,并且申请权限。

下面这张图将有助于你理解Microsoft Graph的整体架构

最后更新:

类似资料

  • 概述 国际化和本地化的目的就是让一个网站应用能做到根据用户语种和指定格式的不同而提供不同的内容。 Django 对文本翻译, 日期、时间和数字的格式化,以及时区提供了完善的支持。 实际上,Django做了两件事: 由开发者和模板作者指定应用的哪些部分应该翻译,或是根据本地语种和文化进行相应的格式化。 根据用户的偏好设置,使用钩子将web应用本地化。 很显然,翻译取决于用户所选语言,而格式化通常取决

  • 虽然Django 满满的便捷性让Web 开发人员活得轻松一些,但是如果不能轻松地部署你的网站,这些工具还是没有什么用处。Django 起初,易于部署就是一个主要的目标。有许多优秀的方法可以轻松地来部署Django: 如何使用WSGI 部署 部署的检查清单 FastCGI 的支持已经废弃并将在Django 1.9 中删除。 如何使用FastCGI、SCGI 和AJP 部署Django 如果你是部署D

  • 本书概述 进程的概念大家都很熟悉,但你是否能准确说出僵尸进程的含义呢?还有 COW(Copy On Write)、Flock(File Lock)、Epoll 和 Namespace 的概念又是否了解过呢? 本书汇集了进程方方面面的基础知识,加上编程实例,保证阅读后能自如地回答以上问题,在项目开发中对进程的优化也有更深的理解。 本书架构 本书按循序渐进的方式介绍进程的基础概念和拓展知识,主要涵盖以

  • Docker在1.12.0和以上版本中增加了swarm模式。通过swarm模式管理的Docker Engines集群称之为“Swarm”。并可以通过Docker CLI来创建Swarm,在Swarm中部署应用服务,以及管理Swarm。 功能特点 在Docker Engines中集成了集群管理功能:通过Docker CLI可以创建一个用来发布应用services的swarm,而不需要安装其他任何额外

  • 这是 Elasticsearch 官方的 PHP 客户端。我们把 Elasticsearch-PHP 设计成低级客户端(低级设计模式),使用时不会偏离 REST API 的用法。 客户端所有方法几乎都与 REST API 对应,而且也与其他编程语言的客户端(如 ruby, python 等)方法结构相似。我们希望这种对应方式可以方便开发者更加容易上手客户端,且以最小的代价快速从一种编程语言转换到另

  • 特点 为什么用 Groovy?