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

ReactJS应用调用Graph API读写Azure B2C用户信息遇401问题咨询

需求可行性与401错误解决方案

需求可行性

完全可行。Azure B2C支持通过Microsoft Graph API读写用户数据,只要配置正确的应用权限并获取到符合要求的访问令牌即可实现。

401错误原因及修复步骤

你遇到的Access token validation failure. Invalid audience错误,核心是使用的令牌不符合Microsoft Graph API的要求,具体问题和修复如下:

1. 错误使用ID令牌而非访问令牌

代码中你用了response.idToken,但ID令牌(idToken)仅用于验证用户身份,不能用来调用受保护的API。调用Microsoft Graph必须使用访问令牌(accessToken),它的受众(aud字段)才是目标API的合法地址。

2. 请求的权限范围(scopes)不完整

你只请求了offline_access,没有包含Microsoft Graph的具体权限范围(比如读取用户资料的User.Read)。缺少这些权限,获取到的令牌无法被Graph API识别。

3. 调用了已弃用的API端点

你调用的https://graph.windows.net/v1.0/me是旧版Azure AD Graph的端点,目前已被弃用,应使用新版Microsoft Graph的端点https://graph.microsoft.com/v1.0/me。

修改后的代码示例

function requestProfile() {
    instance.acquireTokenSilent({
        // 根据需求添加Microsoft Graph的权限范围
        scopes: ["User.Read", "offline_access"],
        account: accounts[0]
    }).then((response) => {
        // 使用accessToken而非idToken
        const token = response.accessToken;
        console.log(token);
        // 调用新版Microsoft Graph端点
        callMsGraph(token, "GET", "https://graph.microsoft.com/v1.0/me").then(response => {
            setGraphData(response.data);
            console.log(response.data);
        });
    });
}

额外配置要求

在Azure门户的B2C应用注册中,你需要:

  • 进入API权限页面,添加Microsoft Graph的委托权限(比如User.Read、User.ReadWrite等,根据读写需求选择)
  • 点击授予管理员同意,确保权限生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:54:18