You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter应用中通过Azure AD获取当前登录用户的个人资料

Flutter 从 Azure AD 获取用户资料解决方案

我已经在多个生产项目中实现过该功能,你只需要按以下几个步骤排查调整即可:

1. 先确认权限和scope配置

  • 打开Azure Portal的应用注册页,找到你对应的应用,在「API权限」 tab 中添加 Microsoft Graph 的 User.Read 委托权限,务必完成管理员同意
  • 初始化aad_oauth配置时,必须把需要的scope补充完整,不能只使用默认示例的scope,参考配置如下:
final Config config = Config(
  tenant: "你的租户ID",
  clientId: "你的客户端ID",
  scope: "openid profile email User.Read",
  // 其余配置保持和你现有一致即可
);

2. 两种方式获取用户字段

方式一:调用Microsoft Graph接口拉取完整资料

拿到Access Token后,直接请求Graph的用户端点即可获取所有公开资料,参考代码:

import 'package:http/http.dart' as http;
import 'dart:convert';

// 这里的accessToken就是你已经拿到的令牌
final res = await http.get(
  Uri.parse("https://graph.microsoft.com/v1.0/me"),
  headers: {"Authorization": "Bearer $accessToken"},
);
final userInfo = jsonDecode(res.body);
// 常用字段直接取值即可:
// 用户名:userInfo["displayName"]
// 邮箱:优先取userInfo["mail"],为空的话取userInfo["userPrincipalName"]

方式二:直接解析ID Token获取字段

如果不想额外调用接口,可以提前在Azure AD配置令牌可选声明:

  • 进入应用注册的「令牌配置」tab,点击「添加可选声明」
  • 选择ID令牌,勾选你需要的字段:email、given_name、family_name、preferred_username等,保存即可
  • 后续你可以直接解析认证成功后返回的ID Token拿到对应字段,解析可以使用jwt_decoder包,示例:
import 'package:jwt_decoder/jwt_decoder.dart';

Map<String, dynamic> idTokenClaims = JwtDecoder.decode(你的IDToken字符串);
// 直接从idTokenClaims里取你配置的声明字段即可

内容的提问来源于stack exchange,提问作者Ananthakrishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 03:24:03