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

React Native请求Azure AD授权令牌时遇[Error: Data intent is null]错误

解决React Native App Auth对接Azure AD时的[Error: Data intent is null]问题

针对你遇到的问题,从代码和配置里能看到几个关键错误,逐一排查修复:

1. 修正Scope拼写错误

你代码里的opened是拼写错误,OIDC认证必须的正确Scope是openid,这个错误会导致认证流程返回异常数据,触发后续的intent解析错误。

2. 移除Client Secret

React Native移动端属于公共客户端,Azure AD不允许公共客户端使用Client Secret(无法安全存储),直接去掉clientSecret配置项,否则会破坏OAuth2流程。

3. 避免手动处理PKCE

react-native-app-auth库已经内置了PKCE流程的自动处理,不需要额外引入react-native-pkce-challenge,手动传入code_challenge会和库的自动逻辑冲突。

4. 统一Issuer和服务端点配置

你同时配置了issuer(指定具体租户)和serviceConfiguration(用common租户),两者不一致会导致端点解析异常。要么统一用具体租户ID,要么统一用common:

  • 如果是单租户应用:把serviceConfiguration的端点里的common替换成你的租户ID
  • 如果是多租户应用:把issuer改成https://login.microsoftonline.com/common

5. 确保Android端Intent Filter配置正确

在AndroidManifest.xml里的主Activity中添加对应重定向URI的intent-filter,确保应用能捕获认证后的跳转:

<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="com.sham" />
</intent-filter>

修正后的代码示例

import { authorize } from "react-native-app-auth";

// 多租户配置示例,单租户把common换成你的租户ID
const config = {
    clientId: 'MY_CLIENT_ID_AT_AAD',
    issuer: 'https://login.microsoftonline.com/common',
    redirectUrl: 'com.sham://com.sham/android/callback',
    scopes: [
        'openid', 
        'profile', 
        'email', 
    ],
    additionalParameters: {prompt: 'select_account'},
};

try {
    const result = await authorize(config);
    console.log('认证成功:', result);
} catch (err){
    console.log('认证错误:', err)
}

按以上步骤修复后,重新运行应用,应该能正常完成OAuth2授权码流程并获取到令牌。

内容的提问来源于stack exchange,提问作者Arsalan Ahmad Ishaq

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:15:29