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

React Native使用react-native-app-auth从Azure AD B2C获取access token异常

react-native-app-auth 对接 Azure AD B2C 双端问题解决方案

通用配置修正(双端都需要先修改)

你当前配置存在租户不统一的核心错误:issuer使用的是ksg1806租户,但是tokenEndpoint、revocationEndpoint使用的是GFKMS租户,Azure AD B2C要求授权、令牌、注销端点必须属于同一个租户和同一个用户流,优先将所有端点的租户、用户流统一为你实际注册应用的对应值:

// 修正后配置示例(替换为你实际的租户、用户流、客户端ID等值)
const config = {
  // 统一使用同一个租户的issuer,或者你配置了serviceConfiguration可以省略issuer避免冲突
  issuer: 'https://<你的实际租户名>.b2clogin.com/<你的实际租户名>.onmicrosoft.com/v2.0/',
  clientId: '你的实际客户端ID',
  redirectUrl: Platform.OS == 'ios'
    ? 'msauth.com.gfk.consumervoice://auth'
    : 'msauth://com.gfkconsumer/Cb7s2L1nogp57%2BKdddohtF8%2Funk%3D',
  scopes: ['openid', 'offline_access', '你的API访问scope'], // 补充scope才能拿到可用的access token
  serviceConfiguration: {
    authorizationEndpoint: 'https://<你的实际租户名>.b2clogin.com/<你的实际租户名>.onmicrosoft.com/b2c_1_signup_signin/oauth2/v2.0/authorize',
    tokenEndpoint: 'https://<你的实际租户名>.b2clogin.com/<你的实际租户名>.onmicrosoft.com/b2c_1_signup_signin/oauth2/v2.0/token',
    revocationEndpoint: 'https://<你的实际租户名>.b2clogin.com/<你的实际租户名>.onmicrosoft.com/b2c_1_signup_signin/oauth2/v2.0/logout',
  },
};

安卓端错误修复

报错Unable to complete authorization as there is no interactive call in progress按以下步骤排查:

  • 完成上述通用配置修正,确保所有端点租户、用户流一致
  • 检查AndroidManifest.xml中是否正确添加了redirectUrl对应的intent-filter,示例如下:
<activity android:name="net.openid.appauth.RedirectUriReceiverActivity" android:exported="true">
  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data android:scheme="msauth"
          android:host="com.gfkconsumer"
          android:path="/Cb7s2L1nogp57%2BKdddohtF8%2Funk%3D" />
  </intent-filter>
</activity>
  • 检查getAccessToken方法是否存在重复触发的问题,比如按钮点击未做防抖,短时间内多次调用authorize会覆盖前一次请求,导致报错,调用前可以加状态判断是否有正在进行的授权流程

iOS端授权后无返回修复

  • 完成上述通用配置修正
  • 检查iOS项目Info.plist中是否正确添加了URL Scheme,在URL types数组下添加一项,URL Schemes值为msauth.com.gfk.consumervoice,和redirectUrl前缀完全一致
  • 检查AppDelegate中是否添加了链接回调处理代码,示例如下(OC版本):
#import <React/RCTLinkingManager.h>

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  return [RCTLinkingManager application:application openURL:url options:options];
}
  • 确认Azure AD B2C应用注册后台已经正确添加iOS端的redirectUrl,拼写完全匹配代码中的配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:24:02