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

上一篇介绍了Microsoft Graph的基本概念,接下来我们快速体验一下Microsoft Graph到底能做什么?

为了帮助开发人员直观和快速体验Microsoft Graph的魅力,官方提供了一个专门的工具,叫做Graph 浏览器(Graph Explorer)。同时,由于国际版和世纪互联版本的Graph接口相关地址有所不同,所以针对这两个不同的版本,分别有对应的Graph浏览器。

  1. 国际版Graph 浏览器: https://developer.microsoft.com/zh-cn/graph/graph-explorer
  2. 世纪互联版 Graph 浏览器: https://developer.microsoft.com/zh-cn/graph/graph-explorer-china

本文将以国际版Graph 浏览器作为演示。两者的功能及使用流程基本类似,具体的差异在于世纪互联版的某些接口还在快速开发中。关于两者的细微差别,请随时可以通过https://developer.microsoft.com/zh-cn/graph/docs/concepts/deployments 进行了解。

下面将简单演示五个场景,帮助大家理解Microsoft Graph API及其工作原理。

登录Graph 浏览器

点击上图中的“登录”按钮,使用国际版Office 365账号进行登录。请注意,我在此前的文章中已经介绍了如何申请一个为期一年的Office 365开发者订阅。

输入正确的账号和密码后,点击确定,系统将引导用户进行授权确认,如下图所示

只有你自己点击了“接受”按钮,Graph 浏览器才能真正访问到你的数据。上面这个授权方式,其实就是所谓的OAuth的标准机制:Graph 浏览器作为一个独立的应用,它并不需要保存你的Office 365账号信息,它可以得到用户授权之后代表用户去访问到Graph后台所连接的资源,包括Office 365的数据。

查询当前用户的基本信息

完成授权登录后,我们就可以愉快地使用Microsoft Graph的服务了。首先,下图示例了如何获取当前用户的基本信息。

Microsoft Graph的服务是RESTful的,具体表现在发起服务请求,只需要一个Url即可(本例为https://graph.microsoft.com/v1.0/me/),使用的方式也是标准的Http方法(GET,POST等),与此同时,它的返回结果是业界应用最广的Json格式。

查询当前用户的个人网盘文件列表

通过 https://graph.microsoft.com/v1.0/me/drive/root/children ,点击“转到”,可以查询当前用户的个人网盘(OneDrive for Business)文件列表。


查询当前用户的收件箱前10条邮件信息

使用Microsoft Graph,在得到用户授权的前提下,应用程序可以读取到用户的邮件列表,所使用的服务请求地址是 https://graph.microsoft.com/v1.0/me/messages

默认情况下,这个查询只会返回前10条邮件信息,并且不区分邮件目录,如果需要获取特定邮箱目录的邮件信息,请参考下面这样的语法

https://graph.microsoft.com/v1.0/me/mailFolders/**inbox**/messages

如果想要对返回结果集做筛选,排序,请参考下面这样的语法

  1. 只选择前五封邮件 https://graph.microsoft.com/v1.0/me/messages?$top=5
  2. 跳过前五封邮件选择十封邮件 https://graph.microsoft.com/v1.0/me/messages?$skip=5&take=10
  3. 按照发件人邮件地址排序 https://graph.microsoft.com/v1.0/me/messages?$orderby=from/emailAddress/address

更多查询参数,请参考https://developer.microsoft.com/zh-cn/graph/docs/overview/query_parameters

发送邮件

上面演示了几个场景都是查询,实际上Microsoft Graph的功能远远不止是做查询,它也可以在用户授权下进行某些操作,例如接下来要演示的发送邮件。

这里需要用到的API是https://graph.microsoft.com/v1.0/me/sendmail,这个接口需要使用POST方法调用,你要发送的邮件内容通过Json格式进行定义。

{
"message": {
"subject":"Welcome to Microsoft Graph",
"body": {
"contentType": "Text",
"content": " Welcome to Microsoft Graph world."
},
"toRecipients": [
{
"emailAddress": {
"address": "ares@office365devlabs.onmicrosoft.com"
}
}
],
"ccRecipients": [
{
"emailAddress": {
"address": "ares@xizhang.com"
}
}
]
},
"saveToSentItems": "true"
}

如果发送成功的话,返回状态码为200,反之,则会有详细的错误信息。

结语

本文我介绍了利用Graph 浏览器快速体验Microsoft Graph的强大功能。以上只是举了几个常见的例子,如何用支持的功能很多,等待你的发现,常见的查询请参考下图

通过Graph 浏览器体验Microsoft Graph的更多相关文章

  1. 通过第三方工具体验Microsoft Graph

    作者:陈希章 发表于 2017年3月22日 上一篇文章我介绍了如何利用官方提供的Graph 浏览器快速体验Microsoft Graph强大功能,这是极好的起点.官方的Graph浏览器力图用最简单的方 ...

  2. 如何使用 Azure Active Directory 认证和 Microsoft Graph 构建 Blazor Web 应用

    如何使用 Azure Active Directory 认证和 Microsoft Graph 构建 Blazor Web 应用 英文原文:https://developer.microsoft.co ...

  3. 利用Microsoft Graph开发微软的Exchange Calendar会议、Team

    Microsoft Graph是什么? Microsoft Graph 是 Microsoft 365 中通往数据和智能的网关. 它提供统一的可编程模型,可用于访问 Microsoft 365.Win ...

  4. Microsoft Graph Web应用程序极致开发体验

    作者:陈希章 重写于 2017年5月24日 前言 这篇文章最早写于2017年5月2日,当时的想法是从最简单的方式来写如何在一个ASP.NET MVC应用程序中集成Microsoft Graph,但实际 ...

  5. 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)

    作者:陈希章 发表于 2017年6月25日 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Micro ...

  6. 扩展Microsoft Graph数据结构 - 架构扩展

    前言 此前我有一篇 文章 讲解了Microsoft Graph的一种数据扩展技术-- 开发扩展(Open Extensions),它可以实现在支持的对象(例如用户,组等)上面附加任意的数据.但开放扩展 ...

  7. 基于Microsoft Graph打造自己的Timeline应用

    原文链接:https://github.com/chenxizhang/office365dev/blob/e9b5a59cb827841d36692cc4ec52c11d43062e04/docs/ ...

  8. Microsoft Graph API -----起题 Graph API

    最近因为工作需要,接触学习使用了Microsoft Graph API.在看完Microsoft的Graph官方文档之后,也做了一些简单的案例,在Stack Overflow上做过一些回答.整体来说, ...

  9. win10 uwp 使用 Microsoft.Graph 发送邮件

    在 2018 年 10 月 13 号参加了 张队长 的 Office 365 训练营 学习如何开发 Office 365 插件和 OAuth 2.0 开发,于是我就使用 UWP 尝试使用 Micros ...

随机推荐

  1. 简单聊聊java中如何判定一个对象可回收

    背景 说到java的特性,其中一个最重要的特性便是java通过new在堆中分配给对象的内存,不需要程序员主动去释放,而是由java虚拟机自动的回收.这也是java和C++的主要区别之一:那么虚拟机是如 ...

  2. 约瑟夫环C#解决方法

    /*约瑟夫环 (问题描述) 约瑟夫问题的一种描述是:编号为1,2,......n,的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数).一开始任意选 一个正整数作为报数的上限值m,从第一个人开始 ...

  3. 重构手法之Extrct Method(提炼函数)

    返回总目录 本节包含3个手法: 1.Extract Method(提炼函数) 2.Inline Method(内联函数) 3.Inline Temp(内联临时变量) Extract Method(提炼 ...

  4. c++/cmake /Android NDK 动态链接库交叉编译笔记

    项目使用cmake管理,由于项目的需要,核心代码要求跨 Linux/Windows/Android 三平台.Windows和Linux都好说,但Android NDK费了一番功夫还是没有解决.临时的解 ...

  5. Java面试之框架篇(八)

    71,谈谈你对Struts的理解. 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个Servlet,这个Servlet名为ActionServlet,或是ActionServle ...

  6. Thinkphp导入外部类的方法

    相信很多人在使用TP时候都苦恼使用外部类各种不成功 下面为大家详细介绍下引用方法和注意细节 手动加载第三方类库 由于第三发类库没有具体的命名空间,所以需要使用以下几种方法手动导入 1.import方法 ...

  7. Django contrib Comments 评论模块详解

    老版本的Django中自带一个评论框架.但是从1.6版本后,该框架独立出去了,也就是本文的评论插件. 这个插件可给models附加评论,因此常被用于为博客文章.图片.书籍章节或其它任何东西添加评论. ...

  8. ##5.1 Nova控制节点-- openstack pike

    ##5.1 Nova控制节点 openstack pike 安装 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##5.1 Nova控制节点 # co ...

  9. 自己动手编写IOC框架(二)

    万事开头难,上篇已经起了一个头,之后的事情相对就简单了.上次定义了框架所需的dtd也就是规定了xml中该怎么写,有哪些元素.并且我们也让dtd和xml绑定在了一起,使dtd对xml的格式进行校验,并且 ...

  10. Windos系统git提交

    一.$ git status   //查看当前项目下所有文的状态,如果第一次,你会发现都红颜色的,因为它还没有交给git/github管理. 二.$ git add .   //(.)点表示当前目录下 ...