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

Posted

技术标签:

【中文标题】如何使用已安装的 Twitter 应用进行身份验证【英文标题】:How to authenticate using the installed Twitter app 【发布时间】:2021-11-19 00:57:04 【问题描述】:

如果用户在安装本机 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 后,我得到了这个链接。打开链接将显示Webview 登录。不是原生 Twitter iOS 应用。

我尝试使用深层链接手动启动 Twitter 应用,但找不到任何有关如何正确设置链接的资源。

到目前为止,我已经尝试过这样的事情:

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

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

没有成功...

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

【问题讨论】:

【参考方案1】:

自retirement of TwitterKit on May 1, 2018 以来,此流程似乎没有得到官方支持。任何仍向其最终用户提供此功能的应用程序都可能与 Twitter 建立了某种合作关系,以允许在其他情况下未公开记录的这一点。

相关的Twitter Developer Forums thread 中很少详细说明其原因:

不幸的是,此时我们不得不进行一些增量调整,这对每个人来说都不是那么顺利;尤其是如您所见,对于移动应用程序开发人员而言。我们正在过渡到一个新的 API 平台(通过Twitter Developer Labs),随着我们的进展会有一些变化 - 我们是asking for your feedback 来帮助我们,如果你检查想法,身份验证和授权是我们经常听到的。

我今天无法确切告诉您我们何时会得到增强的解决方案,但这是我们正在积极努力的事情。

Direct link

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

我认为这不再可能,因此我鼓励您使用完整的 OAuth 流程。很抱歉,这可能不是您的用户喜欢的方式,但这是获得授权的书面记录方式(我们不记录或支持原生 iOS 应用的 URL 方案)。

Direct link

我们不支持或记录用户在 OAuth 流程之外登录 Twitter 的任何方式;对未记录功能的任何使用如有更改,恕不另行通知。

Direct link


正如上面的链接,Twitter 似乎正在通过他们的UserVoice page 征求对此的反馈,如果你愿意建议重新实现这样的功能。

【讨论】:

以上是关于如何使用已安装的 Twitter 应用进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Zapier 的 Twitter API 进行身份验证?

在向 Twitter/Facebook 进行身份验证后向 Spring Security 进行身份验证

如何在使用 auth0 进行身份验证的反应应用程序中获取用户信息

将 FirebaseUI 与 Twitter 登录一起使用(iOS 应用)

如何从 Web 应用程序访问仅限身份验证的 Twitter API 方法

会话结束后从用户浏览器中删除 cookie。我使用 Passport-twitter 对用户进行身份验证。