Firebase配置自定义SMTP后sendSignInLinkToEmail功能异常排查
自定义SMTP配置下Firebase无密码登录链接异常问题
问题背景
跨SDK(JS-web 8版本、react-native-firebase iOS/Android端)实现无密码登录时,为自定义域名的邮件模板配置自定义SMTP后,生成的登录链接未使用sendSignInLinkToEmail方法传入的actionCodeSettings中的url参数,导致点击链接时无法唤起APP,只能打开手机浏览器。
已完成的配置项
- 自定义域名:
prod.fun.stuff,已完成Firebase Hosting配置并添加至邮件模板 - iOS应用Universal Links配置:
# fun.entitlements applinks:prod.fun.stuff
- 调用
sendSignInLinkToEmail时传入的actionCodeSettings:
const actionCodeSettings = { url: 'https://prod.fun.stuff/links/confirmEmail', handleCodeInApp: true, iOS: { bundleId: 'com.stuff.fun' }, android: { packageName: 'com.stuff.fun' }, dynamicLinkDomain: 'prod.fun.stuff' }
- 自定义SMTP服务:使用Mailgun,为域名
mg.fun.stuff配置SMTP服务器发送邮件
两种配置下的链接表现
启用自定义SMTP后(异常)
收到的登录链接:
http://email.mg.fun.stuff/e/someCrazyEncodedString...
存在问题:
- 域名与
actionCodeSettings中指定的prod.fun.stuff不一致 - 使用HTTP协议而非HTTPS
- 点击后打开手机浏览器,无法唤起APP
关闭自定义SMTP后(正常)
收到的登录链接:
https://prod.fun.stuff/?link=https://fun-stuff.firebaseapp.com/__/auth/action?apiKey%3DgeneratedAPIKey%26mode%3DsignIn%26oobCode%3DgeneratedoobCode%26continueUrl%3Dhttps://prod.fun.stuff/links/confirmEmail%26lang%3Den&apn=com.stuff.fun&amv=1&ibi=com.stuff.fun&ifl=https://fun-stuff.firebaseapp.com/__/auth/action?apiKey%3DgeneratedAPIKey%26mode%3DsignIn%26oobCode%3DgeneratedoobCodeQ%26continueUrl%3Dhttps://prod.stuff.fun/links/confirmEmail%26lang%3Den
符合预期:点击后正常唤起APP
Firebase SMTP设置截图

疑问
- 是否是邮件服务器配置有误?
- 这是使用自定义SMTP时的预期行为吗?
- 是否需要将邮件服务器CNAME配置为另一个Universal Link?
内容的提问来源于stack exchange,提问作者Charles Harris
相关产品推荐
相关产品推荐

