使用 Twitter 推特 OAuth 2.0 服务登录第三方网站,图文教程

使用推特(Twitter)OAuth 2.0 服务登录第三方网站的配置分为三步:第一步是在 Twitter 开发者后台创建应用,配置客户端 ID、客户端密钥和重定向地址;第二步是构造登录页面,用户授权后获取访问令牌;第三步是利用访问令牌访问 Twitter 的开放资源。

用 Apifox,节省研发团队的每一分钟

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站,图文教程

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

要使用推特(Twitter 或者说叫 X 站)  OAuth 2.0 服务登录第三方网站,你一般需要进行以下 3 步的操作配置(注意需科学上网,不然会连接超时)

  • 第 1 步:在 Twitter 开发者后台创建一个应用,并配置客户端 ID、客户端密钥和重定向地址(回调地址)
  • 第 2 步:根据客户端 ID、客户端密钥和回调地址构造登录页面,让用户授权,以获取访问令牌(Token)
  • 第 3 步:有了访问令牌就能够访问 Twitter 的开放资源。


在开始之前,我们先来了解一下什么是 OAuth 2.0?


什么是 OAuth 2.0?

OAuth 2.0 是一种开放标准的授权协议,用于授权第三方应用程序访问受保护的资源,而无需提供用户的用户名和密码。它允许用户在不直接向第三方应用程序披露其凭据的情况下,授权其访问受保护资源,OAuth 2.0 被广泛用于 Web 和移动应用程序中,以提供安全的授权机制。


OAuth 2.0 协议涉及以下角色:

  1. 资源所有者(Resource Owner):通常是用户,拥有受保护的资源,例如图片、个人资料等。
  2. 客户端(Client):第三方应用程序,想要访问资源所有者的受保护资源。
  3. 授权服务器(Authorization Server):负责认证资源所有者并授权客户端访问资源的服务器。
  4. 资源服务器(Resource Server):存储受保护资源的服务器,提供访问受保护资源的 API。
什么是 OAuth 2.0?


OAuth 2.0 协议通过授权流程(Authorization Flow)来实现授权。其中,常见的授权流程包括:

  • 授权码授权流程(Authorization Code Grant):客户端重定向用户到授权服务器,用户登录并授权后,授权服务器返回授权码给客户端,客户端使用授权码与客户端凭证交换访问令牌。
  • 授权码授权流程,带有 PKCE (Authorization Code Grant,With PKCE):与标准授权码模式相同,但客户端需要使用 PKCE(Proof Key for Code Exchange)来增强安全性。
  • 密码授权流程(Resource Owner Password Credentials Grant):资源所有者直接将用户名和密码提供给客户端,客户端使用这些凭据向授权服务器请求访问令牌。
  • 客户端凭证授权流程(Client Credentials Grant):客户端使用自己的凭据直接向授权服务器请求访问令牌,适用于客户端自身需要访问资源的情况。
  • 隐式授权流程(Implicit Grant):用于在浏览器中直接从客户端获得访问令牌,通常用于 Web 前端应用。


Twitter 使用的 OAuth 2.0 授权流程就是“授权码授权流程,带有 PKCE (Authorization Code,With PKCE)”,下面就来介绍一下怎么实现,并讲述如何在 Apifox 中调试。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


步骤 1:获取客户端 ID 和客户端密钥

首先,来到 Twitter 开发者中心,如果没有账户,就先创建一个账户再进入,然后在里面,会自动给你创建一个初始的应用,如果没有,需自行创建一个,然后在应用页面的下方,应该会有“User authentication settings”的设置项,点击“Edit”进入到编辑页。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


在“User authentication settings”页,需给你的应用设置权限,具体选什么要根据你的业务进行选择。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


接着在下方,配置回调地址(Callback URI),也就是重定向 URL。这个回调地址可以填你的网站域名,如果是在本地开发,也可以填你的本地地址,比如http://127.0.0.1:8080/callback,你必须要保证你的回调地址可可以正常访问。下一必填项的网站地址(Website URL),可以填你的网站域名,如果还没有准备好域名,先随便填一个也可以。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


上面的配置都填写后,点击“Save”保存即可,这个时候,就会生成客户端 ID(Client ID) 和客户端密钥(Client Secret),记得复制下来保存好,如果忘记了,需要重新生成,在应用中点击“Keys and tokens”,页面往下滚动即可看到。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站
使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


以上信息配置完成之后,我们正式进入 OAuth 2.0 授权的主流程。


步骤 2:获取访问令牌

当上文的第一步准备好以后,我们就可以去申请访问令牌(Token),获取访问令牌这一步,我们通过 Apifox 来演示,Apifox 是一款非常优秀的接口调试、管理工具,你可以在 Apifox 中直接获取到 Token 访问令牌。如果你还没有安装 Apifox,现在就去下载一个吧!

Apifox 新版
Apifox 


1.新建 HTTP 请求

在 Apifox 中新建一个 HTTP 项目后打开,然后在项目里新建一个请求,选择【修改文档 -> Auth -> OAuth 2.0】选项。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站

2.选择授权模式为“PKCE”

Apifox 中 OAuth 2.0 默认选择的授权模式为 Authorization Code(授权码模式),因为 Twitter OAuth 2.0 用的是 Authorization Code(With PKCE)(授权码模式,带有 PKCE),所以你需要在“授权模式”这里做相应的切换。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


3.配置客户端 ID、客户端密钥和重定向地址

接着在页面下方找到 Client ID 和 Callback URL,将从 Twitter OAuth 2.0 服务中获取到的客户端 ID(Client ID) 、客户端密钥(Client Secret)以及配置的回调地址(Callback URI)填进去即可,具体参数就是上文在“步骤一”中的配置。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


4.配置授权码的请求地址

根据 Twitter 官方文档的描述,在进行 OAuth 2.0 认证时,授权码的请求地址(Auth URL)是:

https://twitter.com/i/oauth2/authorize

将这个授权码的请求地址填写到 Auth URL 里即可,这个地址我们可以把它理解为登录授权页面,在首次校验登录状态时会打开这个页面(在客户端是窗口),然后让你填写用户名和密码。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


一般在手动构造登录授权页面的时候,这个授权地址的后面还需要携带一些参数,比如像这样的:

https://twitter.com/i/oauth2/authorize?
response_type=code&
client_id=M1M5R3BMVy13QmpScXkzTUt5OE46MTpjaQ&
redirect_uri=https://www.example.com&scope=tweet.read%20users.read%20offline.access&
state=state&
code_challenge=challenge&
code_challenge_method=plain
注:正常情况下无需进行参数换行


但是,在 Apifox 中,后面的参数一般就不需要了,只要问号?前面的路径就行,因为其它必填参数已单独在其它选项中配置,当然如果你想携带一些 Query 参数,你也可以加上,点击该输入框后面的图标即可添加:

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


我们也可以展开“更多”选项,将需要填写的参数值填写到对应的选项里,比如 “Scope” 里就可以填需要的的权限:tweet.readusers.readoffline.access等。“Code Challenge Method”选项选择“Plain”即可,“Code Challenge Method”指定你用于发出请求的方法,“SHA-256”代表哈希加密传输,“Plain”代表客户端密钥明文地包含在授权请求中。在“State”选项中填写state,第三方平台要求必填的,我们一般都给它填上,不然会提示“无权限”。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站

5.配置访问令牌的请求地址

根据 Twitter 官方文档的描述,要申请到访问令牌,需要请求的 URL 为:

https://api.twitter.com/2/oauth2/token
使用 Twitter 推特 OAuth 2.0 服务登录第三方网站

将这个地址填写到 Access Token URL 输入项内即可。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站

6.获取访问令牌

上文的配置项都设置好以后,就可以点击“获取 Token”按钮来获取访问令牌了。点击后,如果是初次登录,会弹出一个窗口让你授权,填写你的 Twitter 账户的用户名以及密码即可。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


填写完用户名密码后,会让你确认授权,点击确认即可。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


授权完成后,就会自动获取到访问令牌,并显示在页面上,同时,会将 Twitter 返回的其它信息也一并解析出来。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


注意,如果你开了代理,你需要到“设置”里把代理打开,不然有可能会连接失败(需科学上网,不然会连接超时)。遇到其它错误,你可以检查一下是不是某些第三方平台需要的必填参数没有填写,修改错误后,点击“清除 Cookie”并重新获取 Token 即可。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站


步骤 3:根据 Token 访问开放资源

有了访问令牌(Token)之后,你就可以拿这个访问令牌调取 Twitter 的开放资源了,具体有什么样的开放资源,可以在 Twitter API v2 authentication  中查看。发送请求时 Apifox 会自动将 Token 附加到请求头的Authorization 中,添加至Bearer 后发送出去。如果你要将 Token 携带在 URL 上,你也可以在页面的配置项中修改 Token 的“添加位置”,将其选择为“Query Params”即可。

使用 Twitter 推特 OAuth 2.0 服务登录第三方网站

总结

使用推特(Twitter)OAuth 2.0 服务登录第三方网站的配置分为三步:第一步是在 Twitter 开发者后台创建应用,配置客户端 ID、客户端密钥和重定向地址;第二步是构造登录页面,用户授权后获取访问令牌;第三步是利用访问令牌访问 Twitter 的开放资源。OAuth 2.0 是一种授权协议,通过授权流程实现授权,包括常见的授权码授权流程、密码授权流程等。Twitter 使用的是授权码授权流程带有 PKCE。在实际操作中,通过工具如 Apifox 可以便捷地完成 OAuth 2.0 认证,获取访问令牌,并使用该令牌访问开放资源。

Apifox