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

2023-12-14

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

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

如果有人曾经设置过类似的东西并且有资源我可以看看,我将不胜感激。

Thanks.


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

  1. 用于打开应用程序的链接需要保密。此时它本质上是一个密码,所以anyone有权访问该链接的 URL 的人可以使用它来登录。您可以通过使用在指定时间长度后过期的链接来降低此风险。
  2. 链接本身的内容应该进行编码,这样如果数据在传输过程中被窥探,您就不会无意中泄露机密内容。例如,您应该传递令牌而不是纯文本密码。
  3. 你需要成为certain打开该应用程序的用户与单击该链接的用户是同一用户。如果单击链接时应用程序已经安装,那么这很容易,但如果您想要执行“延迟深度链接”(意味着即使尚未安装应用程序,您也希望该行为起作用),那么您需要小心的不匹配。

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

更简单、更强大的选项

Branch.io(全面披露:我是 Branch 团队的成员)链接可用于增强此类体验。与 URI 方案和通用链接不同,我们do允许您通过每个链接传递真实的键:值参数对,我们拥有迄今为止最好的匹配准确度在该领域。我会做以下事情:

  1. 使用 Branch 在您的网站上生成链接。在链接中包含唯一标记作为参数。您可以使用分行web SDK为此(它甚至作为内置sendSMS()功能),或者直接转到API.
  2. 将该唯一令牌存储在您自己的后端。
  3. 当应用程序打开时,您将获得作为链接数据的参数。检查是否有分行+match_guaranteed范围确保您拥有正确的用户(有关如何验证的更多信息,请参阅上面的博客文章)。
  4. If +match_guaranteed回来true,根据后端存储的值验证返回的令牌并让用户登录。如果false,或者令牌未验证,请处理错误(可能通过要求用户手动登录)。

为了提高安全性,请将令牌与过期时间戳(可能是 5-10 分钟)一起存储在后端,并且如果链接已过时,则不允许自动身份验证。这将防止稍后在某处找到 URL 并重复使用,并且还可以确保如果后来有人检索该链接的内容,不会发生任何不良情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 当我使用prepareForSegue将值传递给目标控制器时,存在一些问题

    首先 我使用storyboard创建两个uiviewcontroller 第一视图控制器 and 第二个视图控制器 并使用 xcode 嵌入导航控制器 into 第二个视图控制器 编辑器 gt 嵌入 gt 导航控制器 然后 我还想使用 se
  • swift 中 pch 的替代品是什么?

    我想知道可以用什么来代替 swift 中的 pch 有没有 pch 的替代方案或方法可以快速摆脱导入 这样我们就不需要对所有类都这样做 我不想一直随身携带 进口 swift 中 pch 的最佳替代品是什么 您无法在 swift 中定义 宏
  • 如何从装有 iOS 5 的新 iPhone(供个人使用)获取历史位置数据?

    过去 从 iPhone 上名为solidified db 的文件中获取历史位置数据很容易 例如 请参阅http petewarden github com iPhoneTracker http petewarden github com i
  • 定时器时间不作为变量改变?

    这是我的代码 private int V Time 1 try final Timer V Timer final Handler V Handler V Timer new Timer V Handler new Handler Loop
  • 如何以编程方式关闭画中画

    我在使用画中画模式时遇到了这个问题 当从 PIP 本身以外的其他位置再次打开 Activity 时 我想关闭 PIP 画中画 不是来自关闭按钮 我想要与 youtube 相同的场景 即当用户单击 PIP 画中画 时 它会打开相同的活动 但是
  • 在 Unity 中构建 apk 应用程序时包含文件

    在unity中构建apk文件时如何将文件和文件夹添加到apk文件中 我需要的是在Android上安装应用程序后 在应用程序的父目录 android data com company product files 中存在一些文件和文件夹 这是我
  • 在后台线程上搜索

    我试图在 iPhone 应用程序中搜索数千个对象 但是搜索严重滞后 每次击键后 UI 都会冻结 1 2 秒 为了防止这种情况 我必须在后台线程上执行搜索 我想知道是否有人有一些在后台线程上搜索的提示 我读了一点NSOperation并在网上
  • 重新安装我的 iPad 应用程序时,ApplicationIconBadgeNumber 未重置。

    我正在使用以下代码设置我的 applicationIconBadgeNumber UIApplication sharedApplication setApplicationIconBadgeNumber theIntToDisplay 问
  • 无法读取第 0 行,第 -1 列

    我正在尝试复制使用 SQLite 管理器创建的数据库 我在其中执行了以下操作 CREATE TABLE android metadata locale TEXT DEFAULT en US and INSERT INTO android m
  • Android 中的 BLE Gatt onConnectionStateChanged 失败,状态为 257

    我正在开发一个同时连接到多个BLE设备的Android应用程序 之后我从这些设备永久读取特征 但过了一会儿 我在onConnectionStateChanged 函数中得到状态257 android文档没有解释错误的原因是什么 或者如何修复
  • 在 swift ios 中播放远程 mp3 文件需要花费大量时间

    我有麻烦了 我想在我的应用程序中播放远程 mp3 文件 但 mp3 文件需要很长时间 大约 5 6 分钟 来播放 为什么 任何人都可以建议我应该做什么 import UIKit import AVFoundation class TestV
  • 布局聊天气泡问题:TextView 占满整个屏幕

    我正在研究泡泡聊天 我使用具有两种布局的适配器 一种用于传入消息 另一种用于我的消息 适配器工作正常 我的问题在于传入布局 无法很好地显示传入时间文本 当消息文本增长时 会填满屏幕的整个宽度 并隐藏消息时间的文本 第一个问题 如何才能实现这
  • Meteor:即使设置了 ANDROID_HOME 也未设置

    操作系统 Ubuntu 14 04 框架 流星1 1 0 2 应用名称 Songofy 这是输出meteor install sdk android meteor install sdk android Found Android bund
  • 谷歌地图URL中参数的含义是什么

    我正在 Android 上使用 Webkit 浏览器 我想在以下 URL 中获得一个红色 A 符号
  • iOS 低内存崩溃,但内存使用率非常低

    这已经困扰我很长时间了 我的应用程序运行占用大约 2 74MB 内存 没关系 但当它创建 UIWebView 时 它会增加到大约 5 87MB 并继续崩溃 这些是在我的第一代 iPad 上运行时仪器中的实时字节下给出的值 我找不到崩溃日志
  • Android 模拟器提示和技巧 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Android O 的“android:fontFamily”时出现错误“文件名必须以 .xml 结尾”?

    Android O 引入了一项新功能 XML 中的字体 它允许您将字体用作资源 我正在创建font资源文件中的文件夹 由安卓开发者 https developer android com preview features working w
  • 将 MPMoviePlayerController 的视图添加到 UIView

    我想添加MPMoviePlayerController to a UIView 首先 我在 xib 文件中放置了一个视图 名为 youTubeView youtube播放器是MPMoviePlayerController youtubePl
  • 如何像UCBrowser一样使用webview打开url

    我是安卓新手 我正在尝试制作一个示例应用程序来在 webview 中打开网站 问题是 网站以桌面模式打开 如何才能像UC浏览器 手机模式 一样打开网站 尝试这个 它应该有效 webview1 getSettings setJavaScrip
  • iOS 上 Safari 中的 shift 键

    有没有办法在javascript中判断手机键盘上是否按下了shift键 并将其与大写锁定 按两次shift键 区分开来 一些事实 首先 让我们看一下有关 iOS 键盘的一些事实 我假设您已经知道了 当您进入键盘模式时 shift键始终处于激

随机推荐

  • Javascript - 对 div 集合进行排序

    我正在尝试单独学习 Javascript 所以请不要推荐库或 jQuery 我有一个 div 列表 我希望用户能够按它们的值对它们进行排序 例如
  • WPF 多线程进度对话框

    Updated这是我遇到的一个有趣的问题 我需要在后台进程运行时显示进度对话框 通常 这可行 但问题是我需要在后台进程中设置公共静态数据 这是我试图完成的示例 public partial class MainWindow Window p
  • 动态生成多口味配置的包名

    我有 Gradle Android 项目 将供多个客户使用 它还将有免费和付费版本 我意识到它可以通过使用flavorDimensions来实现 但问题是我想要一种根据所选口味生成包名称的方法 flavorDimensions brandi
  • ROW_NUMBER() 的打开 SQL 等效项

    是否有等效的ROW NUMBER ABAP程序的函数 该函数在SQL中的使用如下 SELECT ROW NUMBER OVER ORDER BY SomeField AS Row FROM SomeTable 它应该返回行号作为结果行中的第
  • Weblogic 中的 JSTL 支持

    我尝试使用 Weblogic 开始使用 Java EE 但我无法使 JSTL 标签工作 在最简单的代码中 我在部署应用程序时遇到以下错误 index jsp 1 4 没有标签库可以 通过此 URI 找到 可能的原因 可能是 URI 不正确
  • 将带有查找的循环展平为单个 linq 表达式

    In LINQ to Entities 中的类型成员支持 我试图声明一个要在 LINQ 中查询的类属性 但遇到了一些问题 在这里 我将列出实现中的代码 希望对将其转换为查询有所帮助 我有课Quiz其中包含一个集合Questions 其中每一
  • 在 VSTS 中构建项目不会构建解决方案中的所有项目

    我遇到一个奇怪的问题 当我使用 Visual Studio Build 创建构建并提供 sln 文件时 它假装构建所有项目 我在日志中看到这一点 但是当涉及到发布工件时 只有解决方案中的一些项目 主要是测试项目和一些杂项项目 但不是主要项目
  • 是否“分块”推送到远程 Git 存储库?

    我们想要将 20 00 提交的本地 Git 存储库推送到 GitHub 但事实证明 虽然传输本身没有问题 但 GitHub 实际上一次不会处理超过 1000 个提交 处理 意味着它们将链接提交 问题等 因此 为了能够正确传输此存储库并对其进
  • 连接两个数字位的代码不起作用

    任务是连接 2 个给定数字的二进制 Example Given 5 101 and 3 011 结果是46 concat 101 011 101011 到目前为止的代码 public class Concat public static v
  • 我可以在执行读写的两个线程之间共享 boost::asio::tcp::socket 对象吗

    我有两个线程 一个通过 TCP 套接字发送数据 另一个接收数据 我用boost asio read and boost asio write 用于阅读和写作 我的问题是我是否必须在读写操作期间保护对套接字对象的访问 另一种情况是 如果我有两
  • 如何在另一种方法中使用一种方法的变量?

    我想知道如何使用该变量a i j 在方法中Scores 在方法中使用它MD and sumD 在下面的代码中 在我的代码中 方法MD and sumD 无法得到结果 public class Test3 public void Scores
  • 使用应用程序特定密码通过 GMail 发送电子邮件

    我维护并开发了一个程序 除其他外 通过 GMail 发送电子邮件 到目前为止 发送电子邮件没有出现任何问题 但几天前 此功能停止工作 并出现 凭据错误 消息 我查看了 GMail 的帮助 找到了这个解释 警告 你有什么 为了确保您的帐户安全
  • Excel VBA将静态范围复制到不同工作表上的动态范围

    由于我是 VBA 新手 我在解决这个问题时遇到了一些问题 但我确信它有一个非常简单的解决方案 我本质上是想自动将新数据添加到工作表中 工作表 INB BASKET 单元格 A2 I76 包含指向另一个工作表的实时链接 基本上我想将这些作为值
  • 如何创建Codeigniter批量插入数组

    我怎样才能创建一个CI批量插入数组 就像 data array array title gt My title name gt My Name date gt My date array title gt Another title nam
  • 如何使用 YQL 组合多个剩余查询?

    例如 我想将多个查询剩余查询组合在一起 现在 我一次使用不同的 URL 执行以下代码 我认为在我的例子中最终提出 10 个链接的一个请求会更快 任何帮助表示赞赏 use http javarants com yql javascript x
  • Android 相机 android.hardware.Camera 已弃用

    if android hardware Camera已弃用 您不能使用该变量Camera 那么有什么替代方案呢 API文档 根据Android 开发者指南 for android hardware Camera 他们指出 我们建议使用新的a
  • 选择带有列的多个 Html - 可能吗?

    我正在努力实现以下目标
  • 任务“:app:transformDexArchiveWithExternalLibsDexMergerForDebug”执行失败

    我在运行应用程序时在 android studio 中遇到错误 app mergeDebugJniLibFolders universalimageloader compileDebugNdk NO SOURCE universalimag
  • https 调用未连接到服务器

    我正在研究Windows Service在 Visual Studio 2017 中 在其余 api 调用中 在调试代码时出现异常 有时 前 2 3 个调用在出现异常之后起作用 System Net WebException 远程服务器返回
  • 网站上的链接,可以使用令牌登录应用程序或回退到网站

    有一个请求添加到我们的网站之一的链接 该链接可以在 iOS 或 Android 上打开我们的移动应用程序 并通过传递身份验证令牌登录到该应用程序 如果应用程序在任一平台上都不存在 我需要它返回到相关网站 根据我对通用链接或深度链接的理解 它