Expo Facebook登录无代理重定向:参数缺失重定向URI报错
解决Expo无代理模式下Facebook登录重定向URI错误问题
1. 先修复代码语法错误
你的代码里scopes数组的'email'缺少闭合引号,这会导致语法错误,先修正:
const [request, response, promptAsync] = Facebook.useAuthRequest({ expoClientId: EXPO_CLIENT_ID, scopes: ['public_profile', 'email'], // 补全引号 clientId: CLIENT_ID, redirectUri: AuthSession.makeRedirectUri({ scheme: 'com.julia.app', useProxy: false // 明确禁用代理 }), responseType: ResponseType.Code, });
2. 正确配置Facebook开发者后台
你之前的错误在于把移动应用的Scheme URI加到了**Web端的"有效的OAuth重定向URI"**里,Facebook对移动应用的重定向验证逻辑不同,不需要在这个字段添加Scheme:
- 进入Facebook开发者后台,打开你的应用,切换到「产品 > Facebook登录 > 设置」
- 针对iOS平台:
- 在「iOS」标签下,添加你的Bundle ID(
com.julia.app) - 启用「单点登录」选项
- 在「iOS」标签下,添加你的Bundle ID(
- 针对Android平台:
- 在「Android」标签下,添加你的包名(
com.julia.app)和应用签名哈希 - 启用「单点登录」选项
- 在「Android」标签下,添加你的包名(
- 无需在「有效的OAuth重定向URI」中添加
com.julia.app://...这类Scheme,这个字段仅用于Web/浏览器端的登录重定向。
3. 确认RedirectUri的生成逻辑
使用AuthSession.makeRedirectUri时,加上useProxy: false明确禁用代理,确保生成的URI是你的应用Scheme开头的格式(比如com.julia.app://...),这个URI会被Facebook通过你配置的Bundle ID/包名验证,无需HTTPS前缀。
4. 验证配置
完成上述步骤后,重新启动开发构建,调用登录请求应该就能正常触发重定向,不会再出现No redirect uri in the params. no redirect present in uri错误。
内容的提问来源于stack exchange,提问作者learncode
相关产品推荐
相关产品推荐

