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

sul*_*y77 3 mobile android cross-platform deep-linking ios

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

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

如果有人曾经设置过这样的东西并且有资源,我可以看一下。

谢谢。

Ale*_*uer 5

可以建立像这样的深层链接身份验证系统,但要注意以下几点:

  1. 用于打开您的应用程序的链接需要保持私有状态。此时,它实际上是一个密码,因此任何有权访问链接URL的人都可以使用它登录。您可以通过使用在指定的时间长度后过期的链接来减轻这种风险。
  2. 链接本身的内容应该经过编码,以便在传输过程中窥探到数据时,您不会无意间泄露机密信息。例如,您应该通过令牌而不是纯文本密码。
  3. 您需要确定打开该应用程序的用户与单击该链接的用户相同。如果单击链接时已经安装了应用程序,这很容易,但是如果您要进行“延迟的深层链接”(这意味着即使该应用程序尚未安装,您也希望行为能够正常进行),那么您需要谨慎不匹配。

URI方案和通用链接不支持传递参数,但是它们可以用于构建这样的系统(例如,Slack在其著名的“魔术链接”移动登录过程中使用URI方案链接)。但是,它们仅在已安装应用程序的情况下起作用。两者都不允许您在安装过程中保留上下文,这限制了它们的实用性。

更简单,更强大的选择

可以使用Branch.io(完整披露:我在Branch团队中)链接来增强这种体验。与URI方案和通用链接不同,我们确实允许您在每个链接中传递实数key:value参数对,并且迄今为止,我们在该领域具有最佳的匹配精度。我将执行以下操作:

  1. 使用Branch在您的网站上生成链接。在链接中包含唯一标记作为参数。您可以为此使用Branch Web SDK(甚至可以作为内置sendSMS()函数使用),也可以直接使用API
  2. 将该唯一令牌存储在您自己的后端。
  3. 当应用程序打开时,您将获得作为链接数据的参数。检查Branch的+match_guaranteed参数,以确保您具有正确的用户(有关验证方法的更多信息,请参见上面的博客文章)。
  4. 如果+match_guaranteed返回true,请对照后端存储的值验证返回的令牌,然后登录用户。如果false或令牌未通过验证,请处理错误(可能要求用户手动登录)。

为了提高安全性,请在令牌中存储过期时间戳记(可能5-10分钟),并且如果链接过期,则不允许自动身份验证。这样可以防止以后再找到URL并重用该URL,并且还可以确保以后再检索链接的内容时,不会发生任何不良情况。