开发者社区 问答 正文

如何防止浏览器重定向导致的深度链接循环(再次打开移动应用)?

我们有一个移动应用程序和一个网站。用户会收到链接到网站页面的电子邮件。我们使用iOS通用链接和Android应用链接将移动应用程序与网站联系起来。

让我们说,电子邮件中的链接是https://abc/ticket/1234 当用户点击链接时,它会打开移动应用程序中的相关页面。用户可以通过点击移动页面中的一个按钮在网站中打开相同的内容。它打开网站中的相关页面。我们不打开URLhttps://abc/ticket/1234 直接。这是因为用户首先通过IDP进行身份验证,然后重定向到正确的页面。URL是这样的 https://abc.idp?token=xyz&redirect=https://abc/ticket/1234.

这就是问题所在。

  1. 用户点击链接https://abc/ticket/1234在电子邮件里。

2.打开移动应用程序页面。

3.用户点击移动页面中的“打开门户”按钮。

4.https://abc.idp?token=xyz&redirect=https://abc/ticket/1234 在浏览器中打开。(这是因为应该首先通过IDP对用户进行身份验证。)

5.几秒钟后,用户经过身份验证,浏览器被重定向到https://abc/ticket/1234

6.移动应用程序再次被打开<--我们不想这样。我们需要在浏览器本身打开它。 总之,

我们需要告诉操作系统是从同一个链接打开应用程序还是打开浏览器。

我们考虑用URL传递一个额外的参数https://abc/ticket/1234?do_not_open_mobile_app=true但是,在Apple-app站点关联文件中使用查询参数进行URL比较是不可能的。然后我们尝试为IDP启用深度链接,然后它在Android中很好,但在iOS中不行。

非常感谢您的投入。

展开
收起
游客5akardh5cojhg 2019-12-07 19:09:40 645 分享 版权
阿里云 AI 助理回答

了解您的场景后,您希望在移动应用内处理链接,并确保用户在访问需要身份验证的网页时能顺畅地通过IDP(身份提供商)进行身份验证并重定向到正确的页面。为了实现这一流程,您可以考虑使用阿里云的产品来优化用户体验和安全性。以下是一些建议:

  1. 使用阿里云移动推送服务

    • 为了让移动应用程序能够识别并处理特定格式的链接(如https://abc/ticket/1234),您可以集成阿里云的移动推送服务。通过自定义消息或通知栏消息携带链接信息,当用户点击邮件中的链接时,可以触发移动应用内的逻辑,进而展示相关页面。
  2. 集成阿里云API网关与函数计算

    • 创建一个API Gateway接口,用于接收从移动应用发送的请求(例如,当用户点击按钮要打开网页时)。这个API可以设计为接受ticket ID作为参数。
    • 结合阿里云函数计算(FC),编写一个函数来处理这个请求。该函数首先可以通过调用IDP的认证API,利用事先存储的用户凭证或通过其他方式获取的token进行身份验证。
    • 验证成功后,函数计算生成一个新的带有token的URL(如 https://abc.idp?token=xyz),然后返回给移动应用。
    • 移动应用接收到此URL后,即可使用系统浏览器或其他内嵌浏览器组件打开,从而让用户直接登录并查看所需页面。
  3. 采用阿里云RAM(Resource Access Management)和STS(Security Token Service)

    • 如果涉及到更高级别的安全需求,比如临时授权访问,可以使用阿里云RAM来管理用户身份和权限,结合STS服务生成临时的安全令牌(token),这样可以进一步增强链接的安全性和时效性控制。
  4. 云数据库RDS或MongoDB兼容版

    • 如果需要在服务器端存储和查询ticket相关信息,可以考虑使用阿里云的RDS(关系型数据库服务)或MongoDB兼容版等数据库服务,以支持快速、可靠的数据访问。

综上所述,通过集成阿里云的服务,您可以构建一个既安全又高效的解决方案,确保用户能够无缝地从移动应用跳转到经过身份验证的网站内容。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答