美国东部时间周三下午6点刚过,iOS开发者克莱·琼斯(Clay Jones)的系统开始闪烁红灯。像许多开发人员一样,琼斯使用谷歌的一款名为Crashlytics的产品,在他的应用程序停止工作时进行监控。不知从何而来,它记录了数以万计的撞车事故。它还指出了原因:琼斯的应用程序中包含了一大块代码,让人们可以用他们的Facebook账户登录。
到下午6:30,琼斯已经在代码存储库GitHub上提交了一份关于Facebook软件开发工具包中的缺陷的错误报告。他简明扼要地回答了一种标准化的形式:
你想实现什么目标?我们在应用程序中使用FBSDK作为身份验证选项。
他不是一个人。根据广泛的报道和网络监控服务Down Detector,TikTok,Spotify,Pinterest,Venmo等突出的iOS应用程序,以及周三更有经验的问题。许多用户发现,无论他们是否使用Facebook登录,每当他们试图打开这些应用程序时,他们都会崩溃。GitHub的一位评论者写道:“请慢一点,少弄坏东西。”“谢谢你”
“昨天,Facebook的一个新版本包含了一项改变,导致一些用户在使用Facebook iOS SDK的一些应用程序中崩溃。我们很快发现了这个问题,并加以解决,“Facebook在一份声明中称。
考虑到其过大的影响,这一变化相当小。iOS开发人员Steven Troughton-Smith说:“这有点像服务器的值--本来应该提供一本事物字典--却变成了在没有任何警告的情况下提供一个简单的是/否。”“这么简单的改变可能会破坏一款没有做好准备的应用程序。”
SDK的使用,不仅来自Facebook,而且通常都很常见,部分原因是它的便利性。就像你可能会用其他具有特殊专业知识的制造商提供的零部件组装一辆汽车一样,开发人员也会用外部代码开发应用程序,特别是来自Facebook和谷歌等无处不在的在线公司的应用程序。SDK意味着您需要自己做的工作要少得多。
琼斯说:“几乎所有这些应用程序--Pinterest、Spotify和许多大公司--都使用Facebook SDK作为登录按钮。”“你会看到‘用Facebook登录’。”每个人都有,超级常见,签约率很高,因为这只是一次点击。“
许多没有在Facebook上使用登录的应用程序仍然在使用SDK,这就是为什么周三的问题如此普遍的原因。iOS安全研究员威尔·斯特拉法赫(Will Strafach)表示:“应用程序连接到Facebook是非常常见的,无论它们是否使用Facebook相关功能,主要是为了广告归属。”他的卫报防火墙(Guardian Firewall)应用程序会自动屏蔽在线追踪器。“人们没有意识到这一点,更令人沮丧的是,试图屏蔽它会破坏用户可能真正想要的东西,比如用Facebook登录。”
但对于开发人员来说,使用SDK也意味着在出现问题时放弃控制权,无论是在识别问题还是解决问题方面都是如此。尽管Crashlytics立即发现了有问题的代码,但这些细节对琼斯和其他人帮助不大。“这是Facebook的代码,”琼斯说。“这不像是我们写的东西,也不是我们非常了解的东西。您可以尝试根据代码的编写方式来解析出正在发生的事情,但这不是我们的代码。“。
Facebook并不是唯一一家经历这种特定类型灾难的公司。四月下旬,Google Maps SDK出现了一个类似的问题,导致使用它的应用程序在打开时崩溃。然而,周三的事件值得注意,不仅因为它的广泛影响,还因为它提醒人们,Facebook的触角有多远。不仅如此,几名开发者在琼斯的GitHub错误报告中评论说,崩溃似乎表明Facebook SDK每次打开应用程序时都会向公司的服务器发回信息,他们-几乎可以肯定是他们的用户-发现的活动充其量也是令人惊讶的。
Facebook发言人汤姆·帕内尔(Tom Parnell)表示,默认情况下,SDK被配置为发送应用安装、应用启动、应用内购买和SDK崩溃的事件。开发人员可以禁用这些事件,从我们包含的标准库添加其他事件,或者创建他们自己的自定义事件。";
这是使用任何SDK的另一个潜在缺点:您通常没有很好地了解它到底在做什么。
Strafach说:“实际上,打开App Store应用程序而不让它连接到分析服务来报告安装情况和其他遥测,以及持续报告应用程序的使用情况是很少见的。”“这里有趣的是,人们现在被迫注意到这一点,因为在你的应用程序中随意包含大量代码,而不审查它的错误,这会带来崩溃的负面影响。”
好消息是,就这些事情而言,Facebook确实匆忙解决了这个问题。琼斯说,大约花了两个小时,事情才恢复正常。(修复程序本身更早通过,但需要时间来传播。)。不过,不要太快从宕机中走出来可能是有用的,因为这是一个案例研究,研究你最喜欢的应用程序是如何实际构建的,互联网的各个方面是如何相互联系的,以及有多少条路通往Facebook-无论你有没有账户。
🏃🏽♀️想要最好的健康工具吗?看看我们Gear团队挑选的最好的健身跟踪器、跑步装备(包括鞋子和袜子)和最好的耳机