可以使用令牌登录到应用程序或回退到网站的网站链接

时间:2016-09-09 14:21:34

标签: android ios mobile cross-platform deep-linking

请求添加一个链接到我们的某个网站,可以在iOS或Android上打开我们的移动应用程序,并通过传入身份验证令牌登录到应用程序。如果这些应用程序在任何一个平台上都不存在我需要它回到相关的网站。

根据我对通用链接或深层链接的理解,它们的目的是将您带到应用程序中的特定页面,而不是传递参数。自定义网址方案似乎更合适,但也不支持相同的方式,并且回退到网络是有问题的。

如果有人曾经设置过这样的东西并拥有我可以看到的资源,我们将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:5)

可以像这样构建一个深层链接的身份验证系统,但有一些重要的注意事项:

  1. 用于打开应用的链接需要保密。此时它本质上是一个密码,因此具有访问链接URL的任何人可以使用它来登录。您可以使用在指定时间长度后过期的链接来降低此风险
  2. 应对链接本身的内容进行编码,以便在传输过程中窥探数据时,您不会无意中泄露某些机密信息。例如,您应该通过令牌而不是纯文本密码。
  3. 您需要确定打开应用的用户与点击该链接的用户相同。如果在单击链接时已经安装了应用程序,这很容易,但是如果您想要“延迟深层链接”(意味着即使应用程序尚未安装,您希望行为也能正常工作),那么您需要谨慎不匹配。
  4. URI方案和Universal Links不支持传递参数,但它们可用于构建这样的系统(例如,Slack使用URI方案链接进行着名的“魔术链接”移动登录过程)。但是,它们仅在已安装应用程序时才有效。两者都不允许您在整个安装过程中保留上下文,这限制了它们的用途。

    更简单,更强大的选项

    Branch.io(完全披露:我在分支机构团队中)链接可以用来为这样的体验提供动力。与URI方案和通用链接不同,我们 do 允许您为每个链接传递真实的key:value参数对,并且我们在该字段中具有最好的matching accuracy。我会做以下事情:

    1. 使用Branch在您的网站上生成链接。在链接中包含唯一标记作为参数。您可以使用分支web SDK(即使是内置的sendSMS() function),也可以直接使用API
    2. 将该唯一令牌存储在您自己的后端。
    3. 当应用程序打开时,您将获取参数作为链接数据。检查分支+match_guaranteed parameter以确保您拥有正确的用户(请参阅上面的博客文章,了解有关如何验证此信息的更多信息)。
    4. 如果+match_guaranteed返回true,请根据存储在后端的值验证返回的令牌并将用户登录。如果false或令牌未验证,请处理错误(可能是要求用户手动登录)。
    5. 为了使此额外安全,请将令牌存储在后端,并附带到期时间戳(可能是5-10分钟),如果链接过时,则不允许自动验证。这将阻止在以后某处找到并重用URL,并且如果有人稍后检索链接的内容,也会确保不会发生任何不良事件。