Published on

学习构建 Microsoft Graph API 项目:Azure 认证、获取用户信息和部署记录

Authors
  • avatar
    Name
    Violet Chen
    Twitter

Microsoft Graph API 是个强大的工具,能访问 Microsoft 365 的数据,比如用户邮件、日历、文件等。最近需要做一个POC,焦点是 Azure 认证、拉取用户信息,然后部署到 Azure App Service。过程很有收获,记录下关键步骤。

第一步:Azure App Registration 注册应用

要用 Graph API,得先在 Azure 门户注册个应用。这步是认证的基础。

去 Azure 门户,进 “Microsoft Entra ID”(以前叫 Azure AD),点 “App registrations” 新建应用。选 “Web” 类型,填 Redirect URI,比如 http://localhost:3000 用于本地测试。

注册后,拿到 Application (client) ID 和 Tenant ID。生成 Client Secret:在 “Certificates & secrets” 里新建 secret,记下值。

权限配置:在 “API permissions” 加 Microsoft Graph 的委托权限(Delegated permissions),比如 User.Read 来读用户基本信息。别忘了 Admin consent。

代码里用 MSAL.js 或类似库处理 OAuth 2.0 流程。

第二步:实现认证和获取 Token

用 Node.js 或 .NET 建项目,我选 Node.js 因为简单。

装包:npm install @azure/msal-node

配置 MSAL:

const msal = require('@azure/msal-node')

const config = {
  auth: {
    clientId: 'YOUR_CLIENT_ID',
    authority: 'https://login.microsoftonline.com/YOUR_TENANT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET',
  },
}

const cca = new msal.ConfidentialClientApplication(config)

获取 Token 用 Authorization Code Flow:

  • 引导用户登录,获取 code。
  • 换取 access token:
const tokenRequest = {
  code: req.query.code,
  scopes: ['User.Read'],
  redirectUri: 'http://localhost:3000/redirect',
}

const response = await cca.acquireTokenByCode(tokenRequest)
const accessToken = response.accessToken

这样就拿到 token 了。

第三步:调用 Graph API 获取用户信息

用 token 调用 Graph API。装 @microsoft/microsoft-graph-client

初始化客户端:

const { Client } = require('@microsoft/microsoft-graph-client')

const client = Client.init({
  authProvider: {
    getAccessToken: () => accessToken,
  },
})

获取用户基本信息:

const user = await client.api('/me').get()
console.log(user.displayName, user.mail)

想拉更多数据,比如邮件:/me/messages,或日历:/me/events。权限得匹配。

测试时,用 Postman 或本地服务器跑 API 调用,注意 token 过期用 refresh token 续。

第四步:部署到 Azure App Service

项目建好,部署到 Azure App Service 让它在线跑。

在 Azure 门户创建 App Service,选 Node.js 运行时。

配置认证:在 App Service 的 “Authentication” 里加 Microsoft 提供者,填 Client ID、Secret、Tenant ID。启用 Token Store。

上线后,App Service 会自动处理认证重定向,Graph API 调用用托管身份更安全。

总结

这个项目让我搞懂了 OAuth 基本认证、Graph API 的调用和 Azure 部署。遇到问题主要是权限配置和 token 管理,需要多看官方文档。