Waline 自建 Auth 认证
现对 Waline 第三方登录下手,逐步开始向网站统一认证服务迈步。
和 Askimet 反垃圾服务一样,为了方便 Waline 用户的配置和使用,Waline 官方在设计初期就提供好了一些第三方应用登录服务。对于第三方服务的接入有自定义需求的,可以仿照官方的做法尝试建造一个自己的 Auth 认证服务。
部署官方 walinejs/Auth 项目
Vercel 中部署 Waline 官方 Auth 项目:walinejs/auth: Social account auth service, support github, twitter, facebook, google。实际上就是一个纯提供 API 调用的小项目。
本文假设这个 Vercel 应用已经设置好了自定义域名,比如 waline-auth.域名.com。
在自己的 Waline 评论项目中,注意不是刚刚部署的 Auth 项目,新增环境变量的配置:
| key | value |
|---|---|
| OAUTH_URL | https://waline-auth.域名.com |
第三方登录的接入
GitHub OAuth
接下来介绍接入 Github OAuth。在自己的 GitHub 中 申请一个应用,以支持第三方用户登录。部分参数填写示例:
| key | value |
|---|---|
| Homepage URL | https://waline-auth.域名.com |
| Authorization callback URL | https://waline-auth.域名.com/github?redirect=&state= |

申请完成后,复制 GitHub 为这个应用生成的 Client ID 和 Client secrets,并将其填写到 walinejs/auth 项目的环境变量中(记得 Redeploy)。更多第三方接入详看 walinejs/auth 参数的填写详看 Markdown 文档。
| 环境变量 | GitHub 提供的密钥 |
|---|---|
| GITHUB_ID | <Client ID> |
| GITHUB_SECRET | <Client secrets> |

记得 Redeploy。这样就完成了。

QQ 互联
开发者审核

我填的时候似乎没有那么麻烦,点点点就通过了。
网站应用审核
开发者审核通过后,创建网站应用:

按提示完善信息即可(填写规范详见 创建应用 — QQ互联WIKI)。
回调 URL 填:https://waline-auth.域名.com/qq?redirect=&state=

注意记得在网站页面增加 QQ 登录的按钮,比如我在我的博客 blog.uuanqin.top 添加了「QQ 登录」按钮,按钮上加上跳转链接:
1 | https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=appid&redirect_uri=Callback&state=state |
我感觉链接参数中 client_id 随便填都行,或者就填自己的。

至于在主页添加 QQ 登录按钮的做法,对于 Hexo Butterfly 主题,详见:站内文章打开潘多拉宝盒三步走:参考-学习-魔改。
修改一下基本信息,然后重新提交即可触发重新审核。每次审核大概第二天即可收到结果。
审核通过
审核通过后开启 unionid 获取权限:

关注创建好的应用两个参数:

更新 walinejs/auth 的环境变量:
| 环境变量 | QQ 互联平台 |
|---|---|
| QQ_ID | <APP ID> |
| QQ_SECRET | <APP Key> |
Redeploy 后即可查看效果:

关于 QQ 的 Union ID
据官方文档显示,同一 QQ 互联平台下的不同应用,unionID 是相同的。换句话说,同一用户,对同一个 QQ 互联平台下的不同应用,unionID 是相同的 [1]。
实际测试表明,向不同开发者的应用申请 unionID 得到的值互不相同。
本文参考
- Waline部署之自建Auth并隐藏默认登录方式 | 汐涌及岸 以及该博客文章下评论区
- Update dashboard.js by piaobeiyi · Pull Request #2043 · walinejs/waline
- [Feature]: 禁用(指定的)第三方登录 || [Feature]: Disable (specified) third-party login · Issue #3355 · walinejs/waline
- 服务端环境变量 | Waline
- 准备工作_OAuth2.0 — QQ互联WIKI
- 网站应用接入QQ登陆(QQ互联) - 知乎





