Android下Firebase无密码认证Magic Link无法唤起应用求助
Firebase无密码认证Magic Link无法唤起Android应用的排查方案
核心问题
Firebase无密码认证的Magic Link点击后仅在Chrome打开指定URL,无法唤起目标Android应用,已部署.well-known/assetlinks.json但问题未解决。
排查与修复步骤
1. 验证Asset Links文件有效性
- 确保
assetlinks.json中的SHA-256指纹与应用签名完全匹配(区分debug/release环境) - 用Android Studio的App Links Assistant工具(Tools > App Links Assistant)验证文件配置,排查格式错误或指纹不匹配问题
- 确认文件部署在
https://es0329.com/.well-known/assetlinks.json,且能通过HTTPS直接访问(无跳转)
2. 修正Manifest的Intent Filter配置
当前intent-filter缺少App Links自动验证的关键属性android:autoVerify="true",修改后如下:
<!-- AndroidManifest.xml --> <intent-filter android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="es0329.com" android:scheme="https" /> </intent-filter>
3. 修复Deep Link URI拼接错误
当前deepLinkBaseUrl末尾带斜杠,与路由拼接会生成重复斜杠(https://es0329.com//feed),导致URI不匹配:
// Screens.kt companion object { const val deepLinkBaseUrl = "https://es0329.com" // 去掉末尾斜杠 }
同时调整actionCodeSettings中的URL拼接逻辑,确保生成正确的https://es0329.com/feed
4. 确认Firebase Action Code配置
检查setAndroidPackageName参数的正确性,直接传入布尔值避免常量定义错误:
// AuthStore.kt actionCodeSettings { url = "${Screens.deepLinkBaseUrl}/feed" handleCodeInApp = true setAndroidPackageName( BuildConfig.APPLICATION_ID, true, // 对应INSTALL_IF_NOT_AVAILABLE BuildConfig.VERSION_NAME ) }
5. 测试链接触发逻辑
- 用adb命令直接测试Deep Link:
adb shell am start -W -a android.intent.action.VIEW -d "https://es0329.com/feed",验证是否能唤起应用 - 清除Chrome缓存,避免浏览器保留旧的链接处理规则
- 确保测试设备为Android 6.0(API 23)及以上版本,App Links仅在该版本后生效
内容的提问来源于stack exchange,提问作者es0329
相关产品推荐
相关产品推荐

