Expo React Native应用配置Azure AD认证单一重定向URL咨询
Expo + Azure AD OAuth 构建后重定向URL配置指南
核心结论
构建后的Expo应用(iOS/Android)必须配置「移动和桌面应用」类型的重定向URI,而非Web类型。以下分平台拆解配置步骤:
一、Azure门户应用注册配置
- 进入你的Azure AD应用注册页面,切换到「认证」标签
- 点击「添加平台」,选择「移动和桌面应用」
- 分平台配置重定向URI:
- iOS:格式为
msauth.<你的Bundle ID>://auth,你的场景就是msauth.com.xyz.poc://auth。必须保证Bundle ID与Expo配置完全一致。 - Android:格式为
msauth://<你的包名>/<签名哈希>,例如msauth://com.xyz.poc/abc123XYZ...。这里的签名哈希是核心关键,必须与Expo应用的签名哈希完全匹配(大小写、字符均不能出错)。
- iOS:格式为
二、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(); } };
常见问题排查
- Android签名哈希获取:
- 托管构建:运行
expo credentials:manager,选择Android平台,查看「Upload Keystore」下的SHA-256值,将其转换为Base64格式(可使用在线工具转换),就是Azure需要的签名哈希。 - 本地构建:使用本地keystore生成SHA-256后转Base64。
- 托管构建:运行
- iOS重定向失败:
- 确认Apple开发者后台已开启「关联域名」权限(Expo托管构建会自动处理,本地构建需手动配置)。
- 检查
associatedDomains配置是否正确,必须是applinks:msauth.<Bundle ID>。
- 重定向URI类型错误:
- 绝对不能选择Web类型,必须是「移动和桌面应用」类型,否则Azure会拒绝重定向请求。
内容的提问来源于stack exchange,提问作者ISDr
相关产品推荐
相关产品推荐

