禁用 Twitter 通用深度链接

Disable Twitter Universal Deep Links

更新: Twitter 似乎已经解决了这个问题。单击授权按钮现在可以使用了!谢谢大家的回复。

我有一个 UIWebView 可以打开并指向 Twitter Oauth/Authorize 网页。用户使用那里的 Twitter 详细信息登录,并使用那里的 Twitter 帐户验证我们应用程序的使用。此过程在 Twitter 6.37 iOS 应用程序发布之前运行良好。现在发生的情况是,当 WebView 检测到 https://twitter.com/oauth/authorize?oauth_token 而不是停留在 WebView 中时,它会打开本机 Twitter 应用程序并死掉。如果您卸载 Twitter 应用程序,一切都会像往常一样在 WebView 中运行。我怎样才能防止这种情况发生?我想留在我的 UIWebView 中,而不是自动打开深度 links。我一直在阅读 URL 深度 link 中 iOS 9 的新变化,但不确定如何阻止它们从我的应用程序到其他本机应用程序。感谢您的帮助!

我通过 Xamarin 问题对此的回答:

除非 Twitter removes/updates“https://www.twitter.com/apple-app-site-association”的应用程序部分允许旁路或不在 apple-app-site-association 文件中的辅助 oauth 我不明白你是怎么做的会做的。这些文件已签名,iOS 以 OS 级别处理它们。

我没怎么玩过传递给从 UNI 链接启动的应用程序的 continueUserActivity 委托和 NSUserActivity 对象,但我没有看到启动的应用程序(即 Twitter)到 return 控制原始应用程序,到那时 oauth 调用链无论如何都会被破坏....

  • 独一无二。与自定义 URL 方案不同,通用链接不能被其他应用声明,因为它们使用标准 HTTP 或 HTTPS 链接到您的网站。

  • 安全。当用户安装您的应用程序时,iOS 会检查您上传到网络服务器的文件,以确保您的网站允许您的应用程序代表其打开 URLs。只有您可以创建和上传此文件,因此您的网站与您的应用程序的关联是安全的。

通过:https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html

我会向 Twitter 的开发论坛报告问题(错误?):https://twittercommunity.com

作为解决方法,在 Twitter 身份验证屏幕中,我们可以使用 iOS 键入键盘上的“开始”按钮,而不是使用 Web 视图上的登录按钮,直到 Twitter 修复。 为清楚起见,请参阅随附的屏幕截图 link。

Screenshot for the workaround

我也 运行 解决了这个问题并发现这是因为我的授权端点设置为 https://twitter.com/oauth/authorize?oauth_token="+oauthToken(我相信这是在原始文档中)。如果您将 api 添加为子域:https://api.twitter.com/oauth/authorize?oauth_token="+oauthToken,它将不再触发深度链接并加载 Twitter 应用程序。