Azure注册应用后,如何通过Graph API获取用户完整信息及Windows短用户名?
嘿,咱们逐个解决你的问题,这些都是使用Microsoft Graph API时的常见场景:
1. 如何获取用户的完整信息
你现在只拿到少量字段,是因为/v1.0/users接口默认返回的是精简核心字段集,并非所有可用字段都会主动返回。解决方法很简单:
- 使用
$select查询参数,明确指定你需要获取的字段。比如想拿到常用的用户信息,请求URL可以写成:https://graph.microsoft.com/v1.0/users?$select=id,displayName,givenName,surname,userPrincipalName,samAccountName,mail,accountEnabled,department,jobTitle,officeLocation,createdDateTime - 如果想一次性获取所有你有权限访问的字段,可以直接用
$select=*,不过要注意:部分敏感字段(比如signInActivity)需要额外的权限(如AuditLog.Read.All)才能访问。 - 权限前提:确保你的Azure应用注册已经被授予足够的权限,比如
User.Read.All(读取所有用户信息)或Directory.Read.All(读取目录数据),并且已经完成了权限同意(管理员同意或用户同意,取决于权限类型)。
2. 查看接口返回的完整JSON响应
有几种实用的方式可以查看完整响应:
- 用Graph Explorer工具:在Azure门户里搜索「Graph Explorer」,登录后直接调用
/v1.0/users接口(可以带上$select参数),界面会自动展示格式化后的完整JSON,非常直观。 - 使用API测试工具:比如Postman,配置好Bearer令牌后发送请求,响应面板会显示完整的JSON数据,还能一键格式化方便阅读。
- 代码中输出完整响应:如果是在代码里调用接口,直接把整个响应对象序列化为格式化的JSON字符串打印出来就行。举两个例子:
- C#示例:
var response = await graphClient.Users.Request().Select("*").GetAsync(); Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(response, Newtonsoft.Json.Formatting.Indented)); - Python示例:
import requests import json headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"} response = requests.get("https://graph.microsoft.com/v1.0/users?$select=*", headers=headers) print(json.dumps(response.json(), indent=2))
- C#示例:
3. 获取Windows系统的短登录用户名
你要找的短用户名,对应的就是Graph API里的samAccountName字段!这个字段正是Windows系统中使用的短登录名(比如你说的Pablo Picasso对应的PaPi)。
- 只需要在
$select参数里加上这个字段即可,比如获取单个用户的短用户名:
或者批量获取所有用户的短用户名:https://graph.microsoft.com/v1.0/users/{user-id}?$select=displayName,samAccountNamehttps://graph.microsoft.com/v1.0/users?$select=displayName,samAccountName - 注意:访问
samAccountName需要你的应用拥有User.Read.All或Directory.Read.All权限,记得提前配置并完成权限同意。
内容的提问来源于stack exchange,提问作者user3345547
相关产品推荐
相关产品推荐

