有一个请求添加到我们的网站之一的链接,该链接可以在 iOS 或 Android 上打开我们的移动应用程序,并通过传递身份验证令牌登录到该应用程序。如果应用程序在任一平台上都不存在,我需要它返回到相关网站。
根据我对通用链接或深度链接的理解,它们的预期目的是将您带到应用程序中的特定页面,而不是传递参数。自定义 URL 方案似乎更适合,但也没有以相同的方式支持,并且回退到 Web 是有问题的。
如果有人曾经设置过类似的东西并且有资源我可以看看,我将不胜感激。
Thanks.
可以构建这样的深度链接身份验证系统,但有一些重要的注意事项:
- 用于打开应用程序的链接需要保密。此时它本质上是一个密码,所以anyone有权访问该链接的 URL 的人可以使用它来登录。您可以通过使用在指定时间长度后过期的链接来降低此风险。
- 链接本身的内容应该进行编码,这样如果数据在传输过程中被窥探,您就不会无意中泄露机密内容。例如,您应该传递令牌而不是纯文本密码。
- 你需要成为certain打开该应用程序的用户与单击该链接的用户是同一用户。如果单击链接时应用程序已经安装,那么这很容易,但如果您想要执行“延迟深度链接”(意味着即使尚未安装应用程序,您也希望该行为起作用),那么您需要小心的不匹配。
URI 方案和通用链接不支持传递参数,但它们可用于构建这样的系统(例如,Slack 在其著名的“魔术链接”移动登录过程中使用 URI 方案链接)。但是,它们仅在已安装应用程序的情况下才有效。两者都不允许您在安装过程中保留上下文,这限制了它们的实用性。
更简单、更强大的选项
Branch.io(全面披露:我是 Branch 团队的成员)链接可用于增强此类体验。与 URI 方案和通用链接不同,我们do允许您通过每个链接传递真实的键:值参数对,我们拥有迄今为止最好的匹配准确度在该领域。我会做以下事情:
- 使用 Branch 在您的网站上生成链接。在链接中包含唯一标记作为参数。您可以使用分行web SDK为此(它甚至作为内置sendSMS()功能),或者直接转到API.
- 将该唯一令牌存储在您自己的后端。
- 当应用程序打开时,您将获得作为链接数据的参数。检查是否有分行+match_guaranteed范围确保您拥有正确的用户(有关如何验证的更多信息,请参阅上面的博客文章)。
- If
+match_guaranteed
回来true
,根据后端存储的值验证返回的令牌并让用户登录。如果false
,或者令牌未验证,请处理错误(可能通过要求用户手动登录)。
为了提高安全性,请将令牌与过期时间戳(可能是 5-10 分钟)一起存储在后端,并且如果链接已过时,则不允许自动身份验证。这将防止稍后在某处找到 URL 并重复使用,并且还可以确保如果后来有人检索该链接的内容,不会发生任何不良情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)