Facebook 推出 App Links 开发者工具意在解决什么问题?

原文链接:http://www.zhihu.com/question/23609812


App Links 并不是用来取代 URL Scheme 的,所以也谈不上「有何本质不同」。它并不是某一种技术,而是一项协议(或者像他们说的,一种「解决方案」)。


我们想像一下这样一个常见的场景:A 在大众点评上看到了一家餐厅并想通过微信把这家餐厅分享给 B——此时问题出现了——B 会如何处理这个链接是未知的。如果 A 和 B 都是同一平台的用户还好,当时直接传一个类似于 dianping://shop/12345 的 URL 对方在微信中点了就能在 app 里打开了(先不考虑微信是否接受这样的 URL)。可是如果大众点评某天升级了把 URL scheme 改成 dianping_v2://shop/12345 呢?如果 A 和 B 是两个不同平台的用户呢?如果 B 的手机上根本就没有装大众点评呢?

这个事情,大众点评即使想做也是有心无力——链接一旦分享出去控制权就不在自己手里了。好吧,我们还是可以做一个网页版的嘛,弄一个  m.dianping.com/shop/455  这样的链接,不管对方是什么环境,至少可以在微信的 in-app 浏览器里打开嘛。牺牲部分体验来换取最大的可用性——而且还是有活路的,可以在网页加载好后用 JavaScript 做一点 window.location.href = 'dianping://shop/12345' 这样的小动作嘛——直到有一天微信关掉了 URL Scheme 跳转……

于是这个事情就变得很荒唐。明明对方的手机里有装大众点评的 app,大众点评也支持 URL Scheme,可在微信上点开大众点评的链接就是只能看到 web 版。理论上来说作为平台的微信应该出来挑大梁,不过可能微信忙着征服全世界顾不上这点小事——于是另一个闲得没事干的平台 Facebook(好吧,准确地说是 Facebook 去年买进来的 Parse 团队)跳出来解决了问题。

怎么解决?说难也不难,无外乎就是把自己在几个平台下的跳转规则一并告诉对方。对方是什么平台就按什么平台的规则去处理。如果对方没装我们的 app,那我就告诉他一个安装地址。如果他的平台确实没有我们的 app(并没有想黑 WP 的意思……),那么就给他看一个网页版好了。但是这些规则写在哪呢?用 <meta> 标签放在网页里就好了嘛!于是一个实现了 App Links 的网页大致长成这样:

<html>
<head>
    <meta property="al:ios:url" content="applinks://docs" />
    <meta property="al:ios:app_store_id" content="12345" />
    <meta property="al:ios:app_name" content="App Links" />
    <meta property="al:android:url" content="applinks://docs" />
    <meta property="al:android:app_name" content="App Links" />
    <meta property="al:android:package" content="org.applinks" />
    <meta property="al:web:url"
          content="http://applinks.org/documentation" />
</head>
<body>
Hello, world!
</body>
</html>

大众点评网的程序员们看到之后如获至宝,嗨嗨皮皮(不要质疑我的成语能力!)地把这些 meta tags 都塞进了  m.dianping.com/shop/455 。Parse 说我都给你们写好各个平台下的 SDK 了,解析跳转一条龙哦你们赶紧用。腾讯(过了一年后)说,App Links 是什么?

App Links 还制定了一些别的标准,比如可以多次指定同一项值来完成 fallback(用于新老版本 URL Scheme 不兼容的情况),比如实现了跳转时的数据传输标准(用 JSON 描述,放在 al_applink_data 参数中),比如提供了跳转后 app 的 UX 建议(导航栏用一层蓝色的可点按区域覆盖,点按后返回原 app)。App Links 不是唯一解,也不一定是最优解,但它确实是解决当下 app 间跳转混乱局面的一个可行解(而且标准本身具有可扩展性,即使 iOS 8 里加入类似 Android 中的 Intent,App Links 也可以通过增加几个 meta tags 来支持)。回到最初的问题上,它解决的问题,其实就是 Ilya Sukhar (Parse CEO) 在 F8 上说的这句话:「There is no unified way to navigate to links across all the platforms.」在技术层面上,App Links 统一了流程、跨了平台,这就很好了。

而剩下的问题其实才是最大的问题——有人用的标准才是好标准。这个用也分两种角色:类似大众点评这样的第三方开发者,他们只需要发布自己的 App Links 就可以了,这个事情很简单,如上面所说无非就是在现成的网页里加几个 meta tags 的事情。而类似微信这样的平台则需要实现这样的协议,理论上也不难,但也许除了优化用户体验之外好处有限,可能还会面临到如何去兼容老版本啦、跳转出去会不会降低用户黏性啦、怎么满足平台的统计需求啦之类的问题(随口一说,也许没那么多问题。)老外比较单纯,想想这对用户来说是件好事我们就做吧,于是至少 Parse 有他的亲爹 Facebook 给他撑腰。至于国内,需要有第一个吃螃蟹的人。


其他相关资源:

Facebook推出App Links,简化应用程序间的深层链接


### 回答1: OAuth2.0 是一个用于授权的开放标准协议,它允许用户授权第三方应用程序(如社交媒体应用程序)访问他们的受保护资源(如照片、视频等)。OAuth2.0 的主要目的是为了减少用户在第三方应用程序和资源服务提供者之间共享凭证的需求,从而提高安全性并减少安全风险。 OAuth2.0 的主要组成部分包括: 1.授权服务器:用于管理用户授权的服务器,验证用户身份并颁发访问令牌。 2.资源服务器:存储和管理受保护的资源。 3.客户端应用程序:代表用户请求访问受保护资源的应用程序。 4.访问令牌:由授权服务器颁发给客户端应用程序,用于访问资源服务器中受保护的资源。 5.刷新令牌:用于更新访问令牌,以便客户端应用程序可以持续访问受保护的资源。 使用 OAuth2.0,用户不需要将他们的用户名和密码直接提供给第三方应用程序,从而提高了安全性和隐私保护。但是,使用 OAuth2.0 也存在一些安全风险,例如客户端应用程序的恶意行为可能导致访问令牌泄漏。为了解决这些问题开发者需要遵循 OAuth2.0 的最佳实践,并在实现过程中注意安全性。 ### 回答2: OAuth2.0(开放授权)是一种授权框架,用于授权第三方应用程序访问用户资源。它允许用户将他们在某个资源所有者(如Facebook、Google)处的身份验证信息提供给其他站点或应用程序进行访问,而不需要共享他们的用户名和密码。OAuth2.0所解决问题是用户如何安全地授权第三方应用程序访问他们的个人数据。 在过去,用户通常需要将他们的用户名和密码提供给第三方应用程序,以使其能够访问他们的个人数据。然而,这样的方式存在很多潜在风险,因为用户的敏感信息可能会被盗取或滥用。为了解决这个问题,OAuth2.0允许用户通过对资源所有者进行身份验证来授权第三方应用程序的访问权限。 OAuth2.0通过引入授权服务器和令牌的概念来实现这里的授权过程。当用户希望授权第三方应用程序时,他们将被重定向到授权服务器,在授权服务器上他们输入其凭证进行身份验证。一旦身份验证成功,授权服务器将向第三方应用程序颁发一个访问令牌,该令牌允许第三方应用程序代表用户访问用户资源。 这种方式的优点在于用户不需要共享其用户名和密码,只需授权给第三方应用程序访问特定资源的权限。如果第三方应用程序滥用权限,用户可以随时撤销访问令牌,从而终止对其个人数据的访问。 总之,OAuth2.0是一种安全的授权框架,通过授权服务器和令牌概念,解决了用户如何安全授权第三方应用程序访问其个人数据的问题。 ### 回答3: OAuth2.0是一种开放授权协议,用于在不泄露用户账号密码的情况下,允许用户授权第三方应用或网站访问其受保护的资源。 OAuth2.0协议的主要目的是解决用户在多个应用间共享资源时所面临的问题。在传统的授权方式中,用户需要提供自己的账号密码给第三方应用,这样做存在安全风险,因为第三方应用可能会滥用这些信息。同时,用户在每个应用中都需要输入账号密码,非常繁琐。 OAuth2.0采用了一种更安全且更便捷的授权方式。首先,用户只需要向授权服务器提供一次账号密码,而不是向每个应用提供。授权服务器会颁发一个授权码给第三方应用,该授权码是一次性的,只能用于获取特定资源。第三方应用通过这个授权码访问受保护的资源,而无需知道用户的账号密码。 另外,OAuth2.0还引入了不同的授权模式,以适应不同应用场景。常见的授权模式包括授权码模式、隐式模式、密码模式和客户端凭证模式等。每种授权模式都有自己的特点和适用场景。 综上所述,OAuth2.0解决了用户在多个应用间共享资源时的安全和便捷性问题。它可以保护用户的账号密码不被第三方应用获取,同时简化了用户登录过程,提高了用户体验。同时,OAuth2.0的广泛应用也促进了应用间的互操作性和数据共享,推动了互联网生态的发展。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值