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

Expo React Native应用配置Azure AD认证单一重定向URL咨询

Expo + Azure AD OAuth 构建后重定向URL配置指南

核心结论

构建后的Expo应用(iOS/Android)必须配置「移动和桌面应用」类型的重定向URI,而非Web类型。以下分平台拆解配置步骤:


一、Azure门户应用注册配置

  1. 进入你的Azure AD应用注册页面,切换到「认证」标签
  2. 点击「添加平台」,选择「移动和桌面应用」
  3. 分平台配置重定向URI:
    • iOS:格式为 msauth.<你的Bundle ID>://auth,你的场景就是 msauth.com.xyz.poc://auth。必须保证Bundle ID与Expo配置完全一致。
    • Android:格式为 msauth://<你的包名>/<签名哈希>,例如 msauth://com.xyz.poc/abc123XYZ...。这里的签名哈希是核心关键,必须与Expo应用的签名哈希完全匹配(大小写、字符均不能出错)。

二、Expo 项目配置(app.json)

iOS 配置

{
  "expo": {
    "ios": {
      "bundleIdentifier": "com.xyz.poc",
      "associatedDomains": ["applinks:msauth.com.xyz.poc"]
    }
  }
}
  • bundleIdentifier 需和Azure配置的Bundle ID完全一致
  • associatedDomains 用于处理iOS的Universal Links,确保重定向能正常唤起App

Android 配置

{
  "expo": {
    "android": {
      "package": "com.xyz.poc",
      "intentFilters": [
        {
          "action": "VIEW",
          "data": [
            {
              "scheme": "msauth",
              "host": "com.xyz.poc",
              "pathPrefix": "/<你的签名哈希>"
            }
          ],
          "category": ["BROWSABLE", "DEFAULT"]
        }
      ]
    }
  }
}
  • package 需和Azure配置的包名一致
  • pathPrefix 替换为你从Expo获取的签名哈希(获取方式见下方常见问题)

三、认证代码配置(TSX)

以expo-auth-session为例,根据平台指定正确的重定向URI:

import * as AuthSession from 'expo-auth-session';
import { Platform } from 'react-native';

// 替换为你的租户ID和客户端ID
const TENANT_ID = "你的Azure租户ID";
const CLIENT_ID = "你的Azure应用客户端ID";

const discovery = AuthSession.useAutoDiscovery(`https://login.microsoftonline.com/${TENANT_ID}/v2.0`);

const [request, response, promptAsync] = AuthSession.useAuthRequest(
  {
    clientId: CLIENT_ID,
    scopes: ['openid', 'profile', 'email'],
    redirectUri: Platform.select({
      ios: 'msauth.com.xyz.poc://auth',
      android: 'msauth://com.xyz.poc/<你的签名哈希>',
    }),
  },
  discovery
);

// 触发登录的按钮逻辑
const handleLogin = () => {
  if (request) {
    promptAsync();
  }
};

常见问题排查

  1. Android签名哈希获取:
    • 托管构建:运行 expo credentials:manager,选择Android平台,查看「Upload Keystore」下的SHA-256值,将其转换为Base64格式(可使用在线工具转换),就是Azure需要的签名哈希。
    • 本地构建:使用本地keystore生成SHA-256后转Base64。
  2. iOS重定向失败:
    • 确认Apple开发者后台已开启「关联域名」权限(Expo托管构建会自动处理,本地构建需手动配置)。
    • 检查associatedDomains配置是否正确,必须是applinks:msauth.<Bundle ID>。
  3. 重定向URI类型错误:
    • 绝对不能选择Web类型,必须是「移动和桌面应用」类型,否则Azure会拒绝重定向请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:15:57