我已经成功地在移动设备上设置了一个无密码登录流(使用动态链接(。只要在同一移动设备上打开登录链接,它就可以在iOS和Android上工作。
我想支持用户在移动设备上登录,但在PC上打开链接的情况。这可能吗?
单击电脑上的链接时,我当前看到一个空页面,URL配置在我的ActionCodeSettings
:中
const actionCodeSettings: FirebaseAuthTypes.ActionCodeSettings = {
handleCodeInApp: true,
url: 'https://the-url-i-see',
iOS: {
bundleId: '...',
},
android: {
packageName: '...',
installApp: true,
},
}
我这边缺了哪些零件?
更新
我又近了一步:我创建了一个index.html
,通过https://the-url-i-see
:提供服务
if (firebase.auth().isSignInWithEmailLink(window.location.href)) {
email = window.prompt('Please provide your email for confirmation');
firebase.auth().signInWithEmailLink(email, window.location.href).then(() => {
console.log('Sign-in successful')
}).catch(e => {
console.error('Sign-in failed', e)
})
}
现在有效的方法:
- 请求在手机上登录会发送电子邮件链接
- 在PC上打开链接导航到上述
index.html
- 通过提示确认电子邮件后:
- 登录成功:控制台中的"登录成功">
- 在Firebase控制台中创建/可见的新用户
还缺少什么:
移动应用程序未收到登录通知(特别是onAuthStateChanged
处理程序未启动(。
同时我了解到Firebase Auth不是这样工作的。我的新理解,过于简化:
- 登录链接就像一张票
- 这张票可以用来登录一次
- 登录特定于一个
firebase.auth()
领域(将触发该领域中的onAuthStateChanged
( - 在我的情况下:一个auth领域=一个设备
TL;DR:不支持开箱即用的跨设备无密码登录