不知道群里有没有热心佬愿意帮帮我的,看好多人都接入了linuxdo登录,我自己弄了个站点专门收录网站(十几年的老站),出于方便社区的佬,想接入linuxdo登录,奈何自己水平有限,所以来请教各位佬。希望有热心佬帮忙接入一下
提供一下环境和框架
nginx1.24
PHP版本: 8.2.27
|MySQL版本: 5.6
Smarty版本:3.1.48
MVC框架
不知道群里有没有热心佬愿意帮帮我的,看好多人都接入了linuxdo登录,我自己弄了个站点专门收录网站(十几年的老站),出于方便社区的佬,想接入linuxdo登录,奈何自己水平有限,所以来请教各位佬。希望有热心佬帮忙接入一下
提供一下环境和框架
nginx1.24
PHP版本: 8.2.27
|MySQL版本: 5.6
Smarty版本:3.1.48
MVC框架
?
这词是这么用的
可以参考这个
和这个
笑死我了,不耻下问 ![]()
hmmm 下问
我对过不过是 nodejs,但其实很简单
首先来 LinuxDo Connect 申请接入新客户端,申请后会获得 Client Id 和 Client Secret:
然后生成登录 Url,让用户在浏览器访问这个 Url(这里的 useEnv().linuxDoClientId 就是你在 LinuxDo Connect 申请客户端获得的 Client Id):
用户在网页授权登录后,会回到你设置的 Callback 地址:
然后通过参数里的 code 来获取用户 Token(同样,这里的 useEnv().linuxDoClientId 和 useEnv().linuxDoClientSecret 是你在 LinuxDo Connect 申请客户端获得的 Client Id 和 Client Secret):
然后通过 Token 就能拿到用户信息了:
如果到下周四还是搞不定 hmmm,V 我 50… 哦不对加税 15%,V 我 57.5,我帮你写一个 PHP Demo
不耻上问吧
您去connect里面看看呢,我也不清楚这么老的站能不能接入
不耻下问没绷住 ![]()
不耻下问 ![]()
这话可不兴说,小心吃举报了
别笑了佬,语文水平不太好
一起协助帮忙一下
这么一来就不能体现社区里大佬的水平了
行,能接受
LinuxDo 提肛小助手 - 看到我请提肛
次 通过 LINUX DO <[email protected]>于2025年3月16日 周日13:17写道:
| LinuxDo 提肛小助手 - 看到我请提肛
次 Cat73 文化宣导员
3 月 16 日 |
- | - |
hmmm 下问
我对过不过是 nodejs,但其实很简单
首先生成登录 Url,让用户在浏览器访问这个 Url(这里的
useEnv().linuxDoClientId就是你在 LinuxDo Connect 申请客户端获得的 Client Id):github.com/Cat7373/linuxdo-dof-service
src/http/controller/login.ts
41fb90ebb1. */ 1. async info(ctx: Context): Promise<ResultObj> { 1. return useResult().success(useSession(ctx)) 1. } 1. 1. /** 1. * 获取 LinuxDo 授权登录页地址 1. * GET /api/login/linuxdoAuthUrl 1. */ 1. async linuxdoAuthUrl(ctx: Context): Promise<ResultObj> { 1. const url = `[https://connect.linux.do/oauth2/authorize?response_type=code&client_id=${useEnv().linuxDoClientId}&state=linuxdodnf`](https://connect.linux.do/oauth2/authorize?response_type=code&client_id=$%7BuseEnv().linuxDoClientId%7D&state=linuxdodnf) 1. return useResult().success(url) 1. } 1. 1. /** 1. * LinuxDo 登录 1. * GET /api/login/linuxdo 1. */ 1. @CheckInput('code', 'path') 1. @CheckInput('state', 'path') 1. async linuxdo(ctx: Context): Promise<ResultObj> {用户在网页授权登录后,会回到你设置的 Callback 地址:
github.com/Cat7373/linuxdo-dof-service
src/http/controller/login.ts
41fb90ebb1. } 1. 1. /** 1. * LinuxDo 登录 1. * GET /api/login/linuxdo 1. */ 1. @CheckInput('code', 'path') 1. @CheckInput('state', 'path') 1. async linuxdo(ctx: Context): Promise<ResultObj> { 1. // 参数处理 1. const { code, state } = koaFirstQueryParam(ctx.query) 1. 1. let user: User | null = null 1. 1. if (code!.length === 6 && useTOTP().verifyDebugCode(code!)) { // 调试登录 1. // 使用 state 作为用户 ID 1. const uid = Number(state) 1. // 查出用户 1. user = await useUserTool().findById(uid) 1. if (!user) { 1. return useResult().fail('用户不存在')然后通过参数里的 code 来获取用户 Token:
github.com/Cat7373/linuxdo-dof-service
src/api/api.ts
41fb90ebb1. api_key: string, // API Key (用途不明) 1. 1. detail: string, // 错误描述 1. } 1. 1. /** 1. * LinuxDo 通过 code 获取 Token 接口 1. * @param code 授权码 1. */ 1. export async function fetchLinuxDoToken(code: string): Promise<AxiosResponse<LinuxDoTokenResp>> { 1. const data = { 1. grant_type: 'authorization_code', 1. code, 1. } 1. 1. try { 1. return await fetch({ 1. url: '[https://connect.linux.do/oauth2/token](https://connect.linux.do/oauth2/token)', 1. headers: { 1. 'content-type': 'application/x-www-form-urlencoded', 1. 'Authorization': `Basic ${Buffer.from(`${useEnv().linuxDoClientId}:${useEnv().linuxDoClientSecret}`).toString('base64')}`,然后通过 Token 就能拿到用户信息了:
github.com/Cat7373/linuxdo-dof-service
src/api/api.ts
41fb90ebb1. return (error as any).response // 让外面正常处理 LinuxDo 返回的 401 1. } 1. } 1. 1. /** 1. * LinuxDo 通过 Token 获取用户信息接口 1. * @param token Token 1. */ 1. export async function fetchLinuxDoUserInfo(token: string): Promise<AxiosResponse<LinuxDoUserInfoResp>> { 1. try { 1. return await fetch({ 1. url: '[https://connect.linux.do/api/user](https://connect.linux.do/api/user)', 1. headers: { 1. 'Authorization': `Bearer ${token}`, 1. }, 1. method: 'GET', 1. }) 1. } catch (error) { 1. return (error as any).response // 让外面正常处理 LinuxDo 返回的 401 1. } 1. }
访问话题或者回复此电子邮件以进行回复。
要退订这些电子邮件,请点击此处。
谢谢佬的热心帮助,对于我来说,小白,看不懂这些,也不明白,不过还是要谢谢,也许能帮到别人
不是吧喵,就是生成一个 url,然后调两个接口哎,玩个梗而已,不要来真的呀佬
banlan 通过 LINUX DO <[email protected]>于2025年3月16日 周日13:11写道:
| banlan 无所不知
3 月 16 日 |
- | - |
qq3632094:
不耻下问
?这词是这么用的
零代码!一个超简单的linuxdo connect接入方式 开发调优
最近在搞一个自己的项目Fuclaude Switcher 一个简洁优雅的Fuclaude Helper来了 - 搞七捻三 - LINUX DO 有佬友提到建议接入linuxdo的登录,觉得这是个很不错的建议,确实也很有必要,所以研究了一下。 下面分享一个极简的接入方式,10分钟就能搞定,而且不用写一行代码。 大致思路是接入clerk登录,然后在clerk里把linuxdo配置上即可。 预…
可以参考这个
和这个
小白也能懂的 linuxdo oauth2 快速上手 开发调优
是否想试试给自己服务接上始皇论坛的认证,却因为没接触过而无从下手? 轻松动手,不用工具,使用 curl 就能尝尝成功的滋味,赶紧来试试吧! 取得 code 这边就拿始皇这篇的测试 client id 来使用。 直接打开始皇范例的 url,同意授权之后,导向 localhost ,没有架设服务的你,当然是打不开的。但是你可以手动从 url 取得你的 code 了 http://loca…
访问话题或者回复此电子邮件以进行回复。
要退订这些电子邮件,请点击此处。
谢谢佬,上午我看了这两篇帖子的,我没什么基础得,希望能帮到同样有需求的佬吧
佬,对于我来说,这都是有技术含量的,可能对于你来说小儿科吧,就杯咖啡,也没啥的
那我感觉就算搞定了 LinuxDo 的接口对接,后面你自己的业务你也不一定能搞定哎
不好意思,没能帮到你
cursor载入项目代码,把佬友发的Linuxdo connect文档扔给composer,应该就可以搞定了
没事的,太客气了
我朋友也在帮助我的,只不过他还没来L站