编程语言
首页 > 编程语言> > android – 链接在网站上,可以使用令牌登录到应用程序或回退到网站

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

作者:互联网

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

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

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

谢谢.

解决方法:

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

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

URI方案和Universal Links不支持传递参数,但它们可用于构建这样的系统(例如,Slack使用URI方案链接进行着名的“魔术链接”移动登录过程).但是,它们仅在已安装应用程序时才有效.两者都不允许您在整个安装过程中保留上下文,这限制了它们的用途.

更简单,更强大的选择

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

>使用Branch在您的网站上生成链接.在链接中包含唯一标记作为参数.你可以使用Branch web SDK(它甚至作为内置的sendSMS() function),或者直接进入API.
>在您自己的后端存储该唯一令牌.
>当应用程序打开时,您将获取参数作为链接数据.检查Branch的+match_guaranteed parameter以确保您拥有正确的用户(有关如何验证此信息的详细信息,请参阅上面的博客文章).
>如果match_guaranteed返回true,则根据存储在后端的值验证返回的令牌并将用户登录.如果为false,或令牌未验证,则处理错误(可能要求用户手动登录).

为了使此额外安全,请将令牌存储在后端,并带有到期时间戳(可能是5-10分钟),如果链接过时,则不允许自动验证.这将阻止在以后某处找到并重用URL,并且如果有人稍后检索链接的内容,也将确保不会发生任何错误.

标签:deep-linking,android,ios,mobile,cross-platform
来源: https://codeday.me/bug/20190828/1756249.html