什么是 Oauth 这篇文章并没有讲解,可以看我下面的参考文章。这篇文章主要是怎么从头到尾的获取用户信息。
一、申请应用接入
访问 https://connect.linux.do/ ,选择 应用接入 菜单。点击 申请接入
等上面填写好点击保存之后,就能看到下面的信息了
二、获取 code
拿到上面接入信息中的 Client ID ,填入下面的地址中将下面的地址输入到 浏览器 中。
https://connect.linux.do/oauth2/authorize?response_type=code&client_id=【这里是你自己的 Client ID】&state=【这里是你自己生成的】
示例:https://connect.linux.do/oauth2/authorize?response_type=code&client_id=7pOMIPsrncomeAvUd107DXZmdmBUAxXO&state=20260222
通过浏览器访问后会展示上面的内容,点击 允许 之后就可以获得下面的链接。
http://localhost/auth/linux-do/callback?code=3zlKcLQhE3ZDiCqRaMphzl2lX2dVp7eT&state=20260222
拿到这个链接中的 code 后面需要用。这个 code 只能使用一次,如果使用了就要在获取一次。
三、获取 access_token
这里开始使用 postman 工具。
这里选择的 Type 是 Basic Auth ,UserName Password 填入刚才申请之后的 Client ID 、 Client Secret
grant_type: authorization_code 这是固定的
code: 刚才获取 Code 那一步得到的
redirect_uri: 是你后端获取信息的 url
点击 send 之后可以看到 access_token ,这个后面有用到
四、获取用户信息 User Endpoint
这里还是使用 postman
这里的 Type 选择 Bearer Token ,Token 中填写上一步获取的 access_token 点击 Send
就可以获取需要的内容了
五、刷新 access_token
access_token 3600 秒后就需要重新再来一遍这个流程太麻烦了,所幸的是我们还能刷新这个 token。
在获取 access_token 的时候它下面还有一个返回参数没有用到 refresh_token ,我们可以使用这个参数来实现刷新 access_token
点击 send 之后
所幸我们又有了新的 token
我把上面使用过的链接和参数导出成 curl 格式了,你们跟着这个教程测试的时候可以使用导入即可
- 获取 access_token
curl --location 'https://connect.linux.do/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic N3BPTUlQc3JuY29tZUF2VWQxMDdEWFptZG1CVUF4WE86QWJQYWZMZ1g3bkcyUXNuRDBLYUFnNVVXanphR2lLS1c=' \
--data-urlencode 'grant_type=authorization_code' \
--data-urlencode 'code=CzbcUmrv7Bb3kXm3dTigDG7VY1GDEnPx' \
--data-urlencode 'redirect_uri=http://localhost:80/auth/linux-do/callback'
- 获取用户信息
curl --location 'https://connect.linux.do/api/user' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IjBXYjZSZ1ByU2hnIiwidHlwIjoiSldUIn0.eyJpc3MiOiJodHRwczovL2Nvbm5lY3QubGludXguZG8vIiwic3ViIjoiMzM2ODciLCJhdWQiOlsiaHR0cHM6Ly9jb25uZWN0LmxpbnV4LmRvL2FwaSIsIjdwT01JUHNybmNvbWVBdlVkMTA3RFhabWRtQlVBeFhPIl0sImV4cCI6MTc3MTc0ODgyMiwibmJmIj想oxNzcxNzQ1MjIyLCJpYXQiOjE3NzE3NDUyMjIsImF6cCI6IjdwT01JUHNybmNvbWVBdlVkMTA3RFhabWRtQlVBeFhPIn0.r8f37u5moRxpCWW6AbIkRCNTaYqgXaKcxmgSwDdwRRav4I2qwNheCInh7cmcYoZBGaVwR2YYJI0cy8HlEiiIgZCQhaSIu0aWvhd9YNmG8gmTTnTGtj52QtqupXZk4W3-T2xZ0r1uTMjIkOE6sn1konPHWo0LrwsuflNYXV5pmZFGfI7bHUweo_X_iAXmHUGlbB1kF9bchKAiOv0QzZZkOOAmTrd-i3k4cDn0lAzyx5nmeMon2ZcUNgYQ5C6MM8j4ytlqculKxnSIWmr1QryiQ0Tb2EeGDKAOgOEPotpL0ZbJCuwd5fSFvxy2N8d4KsjJ00rcMiq1SL9Up2RCuafQbg'
- 刷新 access_token
curl --location 'https://connect.linux.do/oauth2/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Authorization: Basic N3BPTUlQc3JuY29tZUF2VWQxMDdEWFptZG1CVUF4WE86QWJQYWZMZ1g3bkcyUXNuRDBLYUFnNVVXanphR2lLS1c=' \
--data-urlencode 'grant_type=refresh_token' \
--data-urlencode 'refresh_token=SlM33RV5HLuhlG1hu7aYF8d0m20nH8MPehdkvaqV'
参考资料:
[1] 让我们来共享论坛用户数据












