禁用 Twitter 通用深度链接

13
更新: 看起来Twitter已经解决了这个问题。现在点击授权按钮就可以正常工作了!谢谢大家的反馈。

我有一个UIWebView,它打开并指向Twitter的Oauth/Authorize网页。用户使用他们的Twitter账户登录并验证我们的应用程序使用他们的Twitter帐户。在Twitter 6.37 iOS应用程序发布之前,这个过程运行得很完美。现在发生的情况是,当WebView检测到https://twitter.com/oauth/authorize?oauth_token时,它会打开本机的Twitter应用程序并崩溃。如果你卸载Twitter应用程序,一切都像平常一样停留在WebView内。我该如何防止这种情况发生?我想留在我的UIWebView中,而不是自动打开深层链接。我一直在阅读关于iOS 9新URL深层链接更改的文章,但不确定如何阻止它们从我的应用程序到其他本机应用程序。感谢任何帮助!

enter image description here


我听说Facebook、Twitter和其他一些网站会阻止Universal Links在其Web视图中的工作。这让我想到,至少在UIWebView和WKWebView中应该有一种拦截和禁用此行为的方法(绝对不是SFSafariViewController)。 - st.derrick
@st.derrick 不是这样的。如果我在那种情况下返回NO,它就不会加载页面或提交到Twitter来验证帐户;如果我返回YES,它就会跳转到Twitter应用程序并中断令牌过程。目前还没有解决方案。我希望Twitter在假定每个人都想通过他们的应用程序打开WebView链接之前先测试这些东西。 - mikemike396
我想知道 Twitter iOS 团队是否意识到他们已经破坏了这个。您可以在 apple-app-site-association 文件 中检查路径。 - st.derrick
有人找到了什么吗?我这里还没有运气。 - mikemike396
1
同样的问题,大家有什么想法吗? - animekun
显示剩余4条评论
3个回答

4
作为解决方法,在 Twitter 认证屏幕上,我们可以使用 iOS 键盘上的“前往”按钮,而不是使用网页视图上的“登录”按钮,直到 Twitter 解决此问题。 请参考附加的截屏链接以获取更清晰的说明。

解决方法的截图


哇这真的有效!很好的解决方法!我希望 Twitter 知道这个问题。我在他们的 Twitter 社区论坛上提交了一个工单。 - mikemike396

3
我也遇到了这个问题,后来发现是由于我的授权终端点设置为https://twitter.com/oauth/authorize?oauth_token="+oauthToken (我相信这在原始文档中是这样的)。 如果您将api作为子域添加:https://api.twitter.com/oauth/authorize?oauth_token="+oauthToken,它将不再触发深度链接并加载Twitter应用。

我们正在使用 Twitterizer(https://github.com/Twitterizer/Twitterizer),看起来他们已经正确设置了端点。 - mikemike396
有没有在v2 API方面有什么进展? - Mike-E

1

以下是我对一道Xamarin问题的回答:

除非Twitter删除/更新“https://www.twitter.com/apple-app-site-association”应用程序部分,以允许绕过或使用不在apple-app-site-association文件中的二次oauth,否则我认为你无法完成它。这些文件已签名,iOS会在操作系统层面处理它们。

我没有太多尝试使用continueUserActivity委托和传递给从UNI链接启动的应用程序的NSUserActivity对象,但我没有看到启动的应用程序(即Twitter)返回控制到原始应用程序的方法,此时oauth调用链也将被打破....

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

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

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

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


感谢您的帖子!我希望未来会有解决方案。这是在Twitter社区网站上发布的问题-> https://twittercommunity.com/t/disable-twitter-universal-deep-links/53580 - mikemike396
最终我转而使用应用级别的身份验证,这并不理想,因为我不得不放弃(删除)基于Xamarin的应用程序中的某些功能,并启动Twitter应用程序以允许用户发布等操作... - SushiHangover
是的,这似乎是唯一的解决方案。但对于我们来说并不是理想的,因为我们有多个平台可以进行用户认证。所以我们必须为每个平台构建应用级身份验证,而不是基于Web的身份验证。 - mikemike396

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接