walinejs / waline

💬 A Simple, Safe Comment System
https://waline.js.org/en/
GNU General Public License v2.0
2.19k stars 381 forks source link

希望能支持输入QQ号码 自动获取QQ头像和昵称 #532

Closed plutotree closed 2 years ago

plutotree commented 3 years ago

valine新的版本有支持QQ头像和昵称的特性,昵称字段输入的是纯数字的话,会认为是QQ号码,然后从中转的服务器拉取头像和昵称(目前的中转服务器有问题无法获取昵称,只有头像),另外纯数字就认为是QQ号码也会有误判情况。

但是用户仅需提供QQ号码,就能自动获取头像和昵称,在国内来说体验还是非常不错了。

试了下这个地址还可以批量获取多个QQ号码的空间头像和昵称: https://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=10001,10002

另外QQ头像可以直接通过qq号码拼接 https://q1.qlogo.cn/g?b=qq&nk=10001&s=100 https://q1.qlogo.cn/g?b=qq&nk=10002&s=100

如果考虑通用性的话,也可以把QQ号码作为一种账号类型来处理

EnderturtleOrz commented 2 years ago

非常赞同

lizheming commented 2 years ago

最新的 @waline/vercel@1.2.3 的版本增加了 GRAVATAR_STR 环境变量,支持 nunjucks 语法,用于配置头像地址,你可以在这里面去判断如果是纯数字昵称或者邮箱是带有QQ号的QQ邮箱的话返回 QQ 头像地址。

{%- set numExp = r/^[0-9]+$/g -%}
{%- set qqMailExp = r/^[0-9]+@qq\.com$/ig -%}
{%- if numExp.test(nick) -%}
  https://q1.qlogo.cn/g?b=qq&nk={{nick}}&s=100
{%- elif qqMailExp.test(mail) -%}
  https://q1.qlogo.cn/g?b=qq&nk={{mail|replace('@qq.com', '')}}&s=100
{%- else -%}
  https://seccdn.libravatar.org/avatar/{{mail|md5}}
{%- endif -%}