如何使用已安装的 Twitter 应用程序进行身份验证

How to authenticate using the installed Twitter app

如果用户登录时安装了原生 Twitter 应用程序,我希望我的应用程序打开 Twitter 应用程序以请求授权。

我已经实现了获取 oauth_token 的流程,以便通过 Twitter 的 api 启动登录过程。只是,当前的 API 文档没有提及任何有关如何在此过程中使用本机 iOS 应用程序的内容。它只发回一个 url 供用户登录。

let url = URL(string: "https://api.twitter.com/oauth/authorize?oauth_token=\(result.oauthToken)")!
            
DispatchQueue.main.async {
   UIApplication.shared.open(url)
}

在收到请求 oauth_token 后,我收到了 link。打开 link 将显示 Webview 以登录。不是原生 Twitter iOS 应用程序。

我尝试使用 deeplink 手动启动 Twitter 应用程序,但找不到任何有关如何正确设置 link 的资源。

到目前为止,我已经尝试过类似的方法:

twitterauth://authorize?consumer_key=[KEY]&consumer_secret=[SECRET]&oauth_callback=swifter-[KEY]

twitterauth://authorize?oauth_token=\(result.oauthToken)

没有任何成功...

正如另一个 post 中提到的,Clubhouse 已经实现了这个流程。所以这是可能的。问题是如何?

此流程自 retirement of TwitterKit on May 1, 2018 以来似乎尚未得到官方支持。任何仍向其最终用户提供此功能的应用程序都可能与 Twitter 建立了某种合作伙伴关系,以允许这样做,否则不会公开记录。

在相关的 Twitter Developer Forums thread:

中零散地详细说明了这样做的原因

Unfortunately at this time we have had to make some incremental adjustments that are not so smooth for everyone; especially as you’ve found, for mobile app developers. We’re in the middle of a transition to a new API platform (via Twitter Developer Labs) and there will be some changes as we go along - we are asking for your feedback to help us, and if you check the ideas, authentication and authorization is something we’ve heard a lot about.

I cannot tell you today exactly when we’ll get to an enhanced solution, but this is something we are actively working on.

Direct link

官方指导是使用传统的WebView方式,直到Twitter正式重新发布此功能:

I don’t believe that this is possible any longer, so I would encourage you to use the full OAuth flow. I apologise that this may not be what your users prefer, but this is the documented way to gain authorisation (we do not document or support URL schemes for the native iOS app).

Direct link

We do not support or document any means of users signing in to Twitter outside of the OAuth flow; any use of undocumented features is subject to change without notice.

Direct link


正如上面的链接所示,Twitter 似乎正在通过他们的 UserVoice page 征求对此的反馈,您是否愿意建议重新实施此类功能。