我有一个pwa应用程序,它只通过电子邮件链接登录来实现一种身份验证方法。(我使用的是firebase的Passwordless authentication with email link策略)我可以打开带有链接的邮件,但是验证用户身份的链接将打开默认浏览器(例如Safari),而不是安装在主屏幕中的PWA。有人知道如何解决这个问题吗?如果用户无法在PWA中进行验证,他们将无法使用安装的PWA。:(
Passwordless authentication with email link
yks3o0rb1#
正如PeteLe所指出的,这在目前是不可能的。用户的电子邮件应用在设备的默认浏览器中打开URL,即使你修改了电子邮件模板,目前也没有办法在iOS和Android中使用自定义处理程序来定位PWA,尽管there are proposals可以实现这一点。(有Android Intent过滤器,但它们没有一致的行为,只能在Android上工作。)然而,只要有足够的胶带,一切皆有可能,所以这里有一个可能的解决方案:1.在PWA中创建一个登录页面,其中包含一个email字段和一个submit按钮。1.当用户输入其电子邮件时,会出现一个one-time password字段,其中包含检查其电子邮件的说明。1.对后端API的异步请求生成并存储一次性密码,然后通过电子邮件将其发送给用户。1.用户切换到他们的电子邮件应用程序,复制密码,然后将其粘贴到one-time password字段中。1.将电子邮件和一次性密码传递给后端API,以创建一个Firebase管理员的自定义令牌,用户可以在客户端使用该令牌进行身份验证。此解决方案的优势在于,它要求用户返回PWA以完成身份验证,同时保持电子邮件身份验证流程。我有一个类似的需要,以编程方式打开一个PWA,经过几个星期的尝试,只是没有一致的方式来打开一个PWA在所有设备。
email
submit
one-time password
pkwftd7m2#
您可以在安装PWA沿着注册protocol handler,它将处理特定的自定义协议(例如:web+myapp://)。因此,当用户单击链接时,它应该是由PWA打开的。截至11月22日,它已经完全支持Chrome Android(不是Firefox,也不是Safari)。参考:https://developer.mozilla.org/en-US/docs/Web/Manifest/protocol_handlers#browser_compatibility
PWA
protocol handler
web+myapp://
2条答案
按热度按时间yks3o0rb1#
正如PeteLe所指出的,这在目前是不可能的。用户的电子邮件应用在设备的默认浏览器中打开URL,即使你修改了电子邮件模板,目前也没有办法在iOS和Android中使用自定义处理程序来定位PWA,尽管there are proposals可以实现这一点。(有Android Intent过滤器,但它们没有一致的行为,只能在Android上工作。)
然而,只要有足够的胶带,一切皆有可能,所以这里有一个可能的解决方案:
1.在PWA中创建一个登录页面,其中包含一个
email
字段和一个submit
按钮。1.当用户输入其电子邮件时,会出现一个
one-time password
字段,其中包含检查其电子邮件的说明。1.对后端API的异步请求生成并存储一次性密码,然后通过电子邮件将其发送给用户。
1.用户切换到他们的电子邮件应用程序,复制密码,然后将其粘贴到
one-time password
字段中。1.将电子邮件和一次性密码传递给后端API,以创建一个Firebase管理员的自定义令牌,用户可以在客户端使用该令牌进行身份验证。
此解决方案的优势在于,它要求用户返回PWA以完成身份验证,同时保持电子邮件身份验证流程。
我有一个类似的需要,以编程方式打开一个PWA,经过几个星期的尝试,只是没有一致的方式来打开一个PWA在所有设备。
pkwftd7m2#
您可以在安装
PWA
沿着注册protocol handler
,它将处理特定的自定义协议(例如:web+myapp://
)。因此,当用户单击链接时,它应该是由PWA打开的。截至11月22日,它已经完全支持Chrome Android(不是Firefox,也不是Safari)。
参考:https://developer.mozilla.org/en-US/docs/Web/Manifest/protocol_handlers#browser_compatibility