如何使用MS Graph SDK v4.7获取ADB2C用户2FA绑定手机号?
获取ADB2C用户2FA手机号的解决方案
你的问题核心是MS Graph SDK v4.7版本太旧,还没有封装Authentication.PhoneMethods这个属性——这个属性对应Graph API中专门用于获取电话认证方法的端点,而v4.7的SDK仅支持更通用的Authentication.Methods,但后者在旧版API逻辑里不会返回手机号的详细信息。
给你两个可行的解决办法:
1. 升级MS Graph SDK到最新版本
直接把SDK升级到当前最新版,就能直接使用文档里的graphClient.Users[id].Authentication.PhoneMethods.Request().GetAsync()调用方式,这是最省心的方案。升级后SDK会自动适配对应的Graph API端点,返回结果里会直接包含2FA用的手机号。
2. 不升级SDK,用自定义请求调用API
如果因为依赖限制无法升级,可以用SDK的自定义请求功能直接调用Graph API的端点:
var requestUrl = graphClient.Users[id].Authentication.AppendSegmentToRequestUrl("phoneMethods"); var response = await graphClient.HttpProvider.SendAsync(new HttpRequestMessage(HttpMethod.Get, requestUrl)); var phoneMethods = await response.Content.ReadAsAsync<List<PhoneAuthenticationMethod>>(); // 从phoneMethods里提取手机号,比如phoneMethods.FirstOrDefault()?.PhoneNumber
注意要先确保你的应用已经申请了UserAuthenticationMethod.Read.All(全局读取)或者UserAuthenticationMethod.Read(读取单个用户)的权限,否则会返回权限不足的错误。
另外补充一点:之前Authentication.Methods没返回手机号,大概率是旧版API里这个端点不包含电话方法的详细数据,不是你漏了配置,而是版本限制导致的。
内容的提问来源于stack exchange,提问作者tlt
相关产品推荐
相关产品推荐

