摘要生成中...
AI 摘要
Hunyuan-lite

现对 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=

image.png

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

环境变量 GitHub 提供的密钥
GITHUB_ID <Client ID>
GITHUB_SECRET <Client secrets>

image.png

记得 Redeploy。这样就完成了。

image.png

QQ 互联

开发者审核

image.png

我填的时候似乎没有那么麻烦,点点点就通过了。

网站应用审核

开发者审核通过后,创建网站应用:

image.png

按提示完善信息即可(填写规范详见 创建应用 — QQ互联WIKI)。

回调 URL 填:https://waline-auth.域名.com/qq?redirect=&state=

image.png

一些常见的被驳回的原因

我踩过的坑:

  • 填对网站的 ICP 备案号,填写时要精确到杠号 - 带数字。
  • 网站页面要有 QQ 登录按钮,否则也会被驳回!

审核规范详见:应用审核规范 — QQ互联WIKI

注意记得在网站页面增加 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 随便填都行,或者就填自己的。

image.png

至于在主页添加 QQ 登录按钮的做法,对于 Hexo Butterfly 主题,详见:站内文章打开潘多拉宝盒三步走:参考-学习-魔改

修改一下基本信息,然后重新提交即可触发重新审核。每次审核大概第二天即可收到结果。

审核通过

审核通过后开启 unionid 获取权限:

image.png

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

image.png

更新 walinejs/auth 的环境变量:

环境变量 QQ 互联平台
QQ_ID <APP ID>
QQ_SECRET <APP Key>

Redeploy 后即可查看效果:

image.png

关于 QQ 的 Union ID

据官方文档显示,同一 QQ 互联平台下的不同应用,unionID 是相同的。换句话说,同一用户,对同一个 QQ 互联平台下的不同应用,unionID 是相同的 [1]

实际测试表明,向不同开发者的应用申请 unionID 得到的值互不相同。

本文参考


  1. UnionID介绍 — QQ互联WIKI ↩︎