You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

使用Firebase SDK认证时遭遇redirect-cancelled-by-user错误

我之前用Cordova做Firebase安卓OAuth认证时,也踩过redirect-cancelled-by-user这个坑——Web端一切正常,安卓端死活报错,折腾了好一阵才找到问题。结合我的经验,大概率是下面几个配置细节没到位,你可以逐一排查:

1. AndroidManifest.xml 里的 Intent Filter 配置缺失或错误

这是最常见的原因。Web端的重定向是浏览器处理的,但安卓端需要让系统知道,把认证后的回调请求交给你的App处理,否则系统会默认取消这个跳转。

你需要在AndroidManifest.xml<activity>标签里(对应主Activity或者处理认证的Activity)添加正确的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:host="YOUR_FIREBASE_APP_ID.firebaseapp.com"
        android:path="/__/auth/handler"
        android:scheme="YOUR_APP_PACKAGE_NAME" />
</intent-filter>

注意替换:

  • YOUR_FIREBASE_APP_ID:你的Firebase项目ID(在Firebase控制台设置里能找到)
  • YOUR_APP_PACKAGE_NAME:你的Cordova应用包名(和Firebase控制台里添加安卓应用时填的包名必须完全一致)

2. Firebase控制台的 OAuth 重定向 URI 未配置安卓端的回调地址

虽然Web端的重定向URI已经配置正确,但安卓端需要单独添加对应的回调地址到Firebase控制台的OAuth提供商设置里:

  1. 打开Firebase控制台 → 认证 → 登录方法
  2. 选择你用的OAuth提供商(比如Google、Facebook)
  3. 在“授权重定向URI”列表里,添加格式为:YOUR_APP_PACKAGE_NAME://YOUR_FIREBASE_APP_ID.firebaseapp.com/__/auth/handler的地址
  4. 保存设置,等待5-10分钟让配置生效(Firebase的配置有时候需要一点同步时间)

3. Cordova插件版本不兼容或配置错误

  • 确保你用的Firebase认证插件(比如cordova-plugin-firebase-authentication)是最新稳定版,旧版本可能存在安卓重定向的bug。可以用cordova plugin update cordova-plugin-firebase-authentication更新。
  • 如果你用到了cordova-plugin-inappbrowser,也要确保版本适配,Firebase的重定向依赖这个插件来打开认证页面并捕获回调。
  • 检查插件的初始化代码,确保在调用signInWithRedirect()之前,Firebase已经完成初始化。

4. ProGuard 混淆规则导致 Firebase SDK 功能异常

如果你的安卓开启了ProGuard混淆,需要在proguard-rules.pro里添加Firebase的保留规则,否则SDK的核心类被混淆后会导致重定向逻辑失效:

-keep class com.google.firebase.** { *; }
-keep class com.google.android.gms.** { *; }

5. 设备系统设置或临时状态问题

  • 部分设备的默认浏览器不是Chrome,可能会影响重定向逻辑,建议暂时切换为Chrome作为默认浏览器测试。
  • 重启设备和清除App缓存,有时候临时的状态异常也会导致这个错误。

排查完这些点,应该能解决redirect-cancelled-by-user的问题。我当时就是漏加了Intent Filter,导致系统无法把回调交给App,才出现的错误。

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

火山引擎 最新活动