Microsoft Graph for Office 365 - 使用Postman发起Microsoft Graph请求

博客地址:http://blog.csdn.net/FoxDave
Microsoft Graph for Office 365 - 使用Postman发起Microsoft Graph请求_第1张图片
Postman
Postman是一个非常好用并且流行的工具,用来快速地测试API请求,包括REST/JSON终结点。本文主要介绍如何使用Postman去发起Microsoft Graph的REST请求。

但是在此之前,笔者还想推荐一款VSCode的插件,它一样非常好用,而且集成在开发环境中,使用起来更方便,支持国产,REST Client。

回到正题,Postman还可以作为快速原型的辅助工具,它支持API生命周期的每个阶段,具有丰富的功能。本文中,我们将演示如何发起OAuth 2.0客户端凭据流(OAuth 2.0 client-credentials (app-only) flow)的Microsoft Graph API请求。

我们将使用Azure AD V2.0的终结点,包含以下几个步骤:

  • 注册Azure AD应用
  • 获得应用的管理授权
  • 通过Postman获得访问令牌
  • 使用访问令牌作为票据令牌发起Microsoft Graph API请求

注册Azure AD应用
这个已经在之前的文章介绍过,不再赘述。

获得应用的管理授权
在我们创建的Azure AD应用中我们选择了“User.Read.All”权限范围,它是需要管理员进行授权的。Azure AD管理员可以使用Azure门户为应用程序进行授权。然而更好的办法是为管理员提供一个使用Azure AD v2.0 ”/adminconsent“终结点的界面。

我们需要创建一个如下格式的管理员授权URL:
https://login.microsoftonline.com/{tenant-id}/adminconsent?client_id={client-id}&state={random-string}&redirect_uri={redirect-url}

下面是之前创建的一个应用的管理员授权URL的例子:
https://login.microsoftonline.com/6aa728b8-4a90-4e00-adbf-e36ee9f2eabc/adminconsent?client_id=bd1f6ea4-dde7-4943-b2a3-effe612846c7&state=12345&redirect_uri=https://app.getpostman.com/oauth2/callback
请注意这只是对上述描述的一个示例,请不要尝试访问,而是自己去创建一个。访问如上URL,Azure会强制只有租户管理员可以登录去完成该请求。登录后页面会询问管理员是否批准应用请求的权限。

下图是一个例子:
Microsoft Graph for Office 365 - 使用Postman发起Microsoft Graph请求_第2张图片
在管理员点击了”接受“之后,页面会跳转到redirect_uri参数中设置的URL。如:
https://app.getpostman.com/oauth2/callback?admin_consent=True&tenant=6aa728b8-4a90-4e00-adbf-e36ee9f2eabc&state=12345

通过Postman获得访问令牌
获取访问令牌和之后调用Microsoft Graph将需要一系列的值,如Tenant ID、Client ID、Secret和Token strings。使用Postman可以将这些值保存在变量中配置起来,之后可以进行复用,这就能很好地节省我们的时间。

在Postman中创建变量的步骤为:点击右上角的眼睛图标,在弹出的窗口中可以添加环境和变量,如下图。
Microsoft Graph for Office 365 - 使用Postman发起Microsoft Graph请求_第3张图片
下面我们进行如下操作:
创建一个新环境,命名为MyTestEnv(名字任意)。并填写如下变量:

  • ClientID = Azure AD App的Client ID,也就是Application ID值
  • ClientSecret = Azure AD App的Client Secret的值
  • TenantID = TenantID的值
  • AccessToken = 留空即可

Microsoft Graph for Office 365 - 使用Postman发起Microsoft Graph请求_第4张图片

使用{{variable-name}}这样的语法去引用上述保存的变量如{{ClientID}}。
接下来我们在Postman中创建一个新的请求,就选择上面创建的环境(在刚才眼睛图标左侧的下拉框选择环境),细节如下:

  • Request Type: POST
  • Request URL: https://login.microsoftonline.com/{{TenantID}}/oauth2/v2.0/token
  • Body Type: x-www-form-urlencoded
  • Body Key/Value Pairs:
    • grant_type = client_credentials
    • client_id = {{ClientID}}
    • client_secret = {{ClientSecret}}
    • scope = https://graph.microsoft.com/.default

注意:上面scope的URL值是告诉Microsoft Graph返回一个已经配置好应用程序权限的访问令牌。
Microsoft Graph for Office 365 - 使用Postman发起Microsoft Graph请求_第5张图片
点击Send按钮发起请求来获取访问令牌,如下图所示。(如果遇到错误,可能是还没有完成管理员授权操作)
Microsoft Graph for Office 365 - 使用Postman发起Microsoft Graph请求_第6张图片
还记得前面创建的变量中access_token暂时留空了吗?下面介绍一个快速拷贝access_token的值到之前创建的变量AccessToken的操作。它避免了手动拷贝access_token值去发起Microsoft Graph请求的步骤。Postman支持编写JavaScript的测试用例,可以在请求完成后马上执行。我们可以从界面上看到Tests标签页。下面的代码片段就负责在请求完成后将返回的响应内容中的access_token的值拷贝到AccessToken变量:

var json = JSON.parse(responseBody);
pm.environment.set(“AccessToken”, json.access_token);

将上述代码加入到Tests标签页后我们再次发起请求,然后查看我们创建的环境中的变量值。
Microsoft Graph for Office 365 - 使用Postman发起Microsoft Graph请求_第7张图片
使用访问令牌进行Microsoft Graph API调用
现在我们使用访问令牌进行Microsoft Graph API的调用,去获取组织中的用户列表。
用下面的参数创建一个请求。

  • Request Type: GET
  • Request URL: https://graph.microsoft.com/v1.0/users
  • Headers:
    • Key: Authorization, Value: Bearer {{AccessToken}}

然后点击Send按钮发送请求,就可以获得用户的列表了。
Microsoft Graph for Office 365 - 使用Postman发起Microsoft Graph请求_第8张图片

在这里插入图片描述

你可能感兴趣的:(Microsoft,365,Microsoft,Graph,Microsoft,Graph,30天训练营中文版)