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

使用ad-b2c-react-native在Expo React Native中无法获取Azure Auth访问令牌

React Native Azure B2C 身份验证无法获取 Access Token

我在React Native中使用Azure B2C进行身份验证时,始终无法在响应中获取到access token。先后尝试了ad-b2c-react-native和react-native-azure-auth两个包,配置如下:

<AuthProvider
        tenant={'<SomeTenant>'}
        appId={'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'}
        loginPolicy="<login-policy>"
        passwordResetPolicy="<password-reset-policy>"
        scope={'https://somedev.onmicrosoft.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Access.All'}
        redirectURI={'msauth://org.myweb.somedev/xxxxxxxxxxxxxxxxxxxxxxxxxxx'}
>

身份验证后的响应始终为:

access: ""
error:null
expiresOn:0
id:""
isAuthentic:false

我怀疑问题出在scope配置上,尝试过微软文档中的不同scope选项,但都没有解决问题。


排查与解决方案

1. 校验Scope的有效性

  • 确认Access.All权限已在Azure B2C应用注册中完成授予+同意:
    登录Azure门户,找到目标租户和应用注册,进入「API权限」页面,检查是否已添加对应API的Access.All权限,且点击了「授予管理员同意」(租户级权限需此操作)
  • 先尝试通用基础scope:openid offline_access,验证基础身份流程是否正常,再逐步添加自定义API的scope

2. 核对Redirect URI配置

  • Azure门户中应用注册的「移动和桌面应用」下,必须添加与代码中完全一致的msauth://org.myweb.somedev/xxxxxxxxxxxxxxxxxxxxxxxxxxx URI,注意大小写、特殊字符完全匹配
  • 检查React Native项目的URL Scheme配置:iOS需在Info.plist中添加对应scheme,Android需在AndroidManifest.xml中配置intent-filter,确保与redirectURI前缀一致

3. 修正租户与策略参数

  • tenant参数需填写完整租户域名,比如somedev.b2clogin.com或somedev.onmicrosoft.com,不能保留<SomeTenant>占位符
  • 确认loginPolicy是Azure B2C中已创建的用户流全称(比如B2C_1_signupsignin),拼写完全正确

4. 开启调试日志排查隐藏错误

  • 给ad-b2c-react-native的AuthProvider添加debug={true}参数,或开启react-native-azure-auth的日志输出,查看身份验证流程中的详细报错信息(部分错误不会直接返回在响应的error字段中)

5. 简化配置逐步排查

  • 先移除自定义scope,仅保留openid测试是否能获取id token,若正常再逐个添加scope,定位问题所在
  • 确认目标API的应用ID URI,与scope中的前缀(https://somedev.onmicrosoft.com/xxx)完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 02:30:48