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

调用Microsoft Graph API phoneMethods返回OpenPropertySegment错误如何解决

问题原因
  • 接口端点不匹配:你参考的是Microsoft Graph的接口文档,但实际调用的是已经废弃的Azure AD Graph端点graph.windows.net,v1.6版本的Azure AD Graph不支持/authentication/phoneMethods这个路径段,这就是报错Unexpected segment OpenPropertySegment的核心原因。
  • 接口版本错误:就算切换到正确的服务端点,1.6也是Azure AD Graph的专属版本号,Microsoft Graph的对应接口需要使用beta或v1.0版本标识。
  • 获取Token的Scope配置错误:如果你的GetAccessToken方法之前是为了调用Azure AD Graph写的,请求的Scope也不符合Microsoft Graph的要求。

修复方案

1. 替换请求URL

把原有请求URL直接替换为Microsoft Graph的对应端点,不需要额外携带租户ID和api-version参数:

https://graph.microsoft.com/beta/users/[用户ID]/authentication/phoneMethods

2. 确认接口权限

你的应用需要提前申请对应权限并获得管理员同意:

  • 应用权限:UserAuthenticationMethod.ReadWrite.All
  • 委托权限:UserAuthenticationMethod.ReadWrite、UserAuthenticationMethod.ReadWrite.All

3. 调整Token请求配置

修改GetAccessToken方法,请求的Scope改为https://graph.microsoft.com/.default(应用权限场景)或对应委托权限的Scope。

4. 优化请求代码(可选)

避免手动拼接JSON出现语法错误,改用序列化工具生成请求体,修复后的完整参考代码如下:

// 构造请求体
var requestBody = new
{
    phoneType = "mobile",
    phoneNumber = phone // 注意手机号需要符合E.164格式,示例:+8613xxxxxxxxx
};
var json = JsonSerializer.Serialize(requestBody);

// 获取Microsoft Graph的Access Token
var accessToken = await GetAccessToken(settings);

using var http = new HttpClient();
var url = $"https://graph.microsoft.com/beta/users/{userId}/authentication/phoneMethods";

var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
request.Content = new StringContent(json, Encoding.UTF8, "application/json");

var response = await http.SendAsync(request);
// 可打印返回内容排查后续问题
var responseContent = await response.Content.ReadAsStringAsync();

额外注意事项

生产环境使用时可以关注官方接口迭代进度,待接口转正到v1.0版本后将路径中的beta替换为v1.0即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:54:02