网站上的链接,可以使用令牌login到应用程序或返回到网站
有一个请求,添加一个链接到我们的一个网站,可以打开我们的移动应用程序在iOS或Android上,并通过传递身份validation令牌login到应用程序。如果应用程序不存在任一平台上我需要它回落到相关的网站。
根据我对通用链接或深层链接的理解,其预期目的是将您带到应用程序中的特定页面,而不是传递参数。 自定义URLscheme似乎更适合,但也不支持相同的方式,回到networking是有问题的。
如果有人曾经设置过这样的东西,并有资源,我可以看看它将不胜感激。
谢谢。
build立一个像这样的深度链接authentication系统是可能的,但有一些重要的注意事项:
- 用于打开您的应用程序的链接需要保持私密。 从本质上来说,它是一个密码,所以任何有权访问链接URL的人都可以使用它来login。您可以通过使用在指定时间后过期的链接来减轻风险。
- 链接本身的内容应该被编码,这样如果数据在传输过程中被窥探,你不会无意中透露一些保密的内容。 例如,您应该通过令牌而不是纯文本密码。
- 您需要确定打开该应用程序的用户是与点击该链接的用户相同的用户。 如果点击链接时已经安装了应用程序,这很容易,但是如果您想要执行“延迟深度链接”(即,即使应用程序尚未安装,您希望该行为仍然有效),那么您需要谨慎的错配。
URIscheme和通用链接不支持传递参数,但是它们可以用来构build这样的系统(例如,Slack使用URIscheme链接来处理他们着名的“魔术链接”移动login过程)。 但是,只有在应用程序已经安装的情况下才能使用。 两者都不允许你在安装时保留上下文,这限制了它们的实用性。
更简单,更强大的选项
Branch.io (全面披露:我在分支团队)链接可以用来提供这样的体验。 与URIscheme和通用链接不同的是,我们确实允许您在每个链接上传递真正的密钥:值参数对,并且我们在该领域具有迄今为止最好的匹配准确性 。 我会做以下几点:
- 使用分支在您的网站上生成链接。 在链接中包含一个唯一的标记作为参数。 你可以使用Branch web SDK (甚至作为一个内置的
sendSMS()
函数 ),或者直接进入API 。 - 将该唯一标记存储在您自己的后端。
- 当应用程序打开时,您将获取参数作为链接数据。 检查分支的
+match_guaranteed
参数以确保您拥有正确的用户(有关如何validation的更多信息,请参阅上面的博客文章)。 - 如果
+match_guaranteed
返回true
,则根据存储在后端的值validation返回的标记并将用户login。如果为false
,或标记未validation,则处理该错误(可能通过要求用户手动login)。
为了提高安全性,请将令牌存储在后端,并使用过期时间戳(可能需要5-10分钟),如果链接过期,则不允许自动validation。 这样可以防止某个URL在以后的某个地方被find并被重用,同时也可以确保在以后某个人检索到链接的内容时,不会发生任何不好的事情。