经过访问cn.gravatar.com多次未果,于是了解到国内它的镜像站,可以更快速的获取头像(但我还是没有官网账号),以及通过QQ号得到QQ头像[1]。虽然这篇文章给出了一位开发者的github链接[2],但是经过查看源码,并未发现实现QQ头像获取的功能,并且因为很久没有维护,code里支持的某一个镜像也失效,因此我便稍微修改一下,不要在意效率。 ## 镜像源 首先是修改失效的镜像,将第52行code修改为 'https://cdn.v2ex.com/gravatar/' => '国内镜像 ( https://cdn.v2ex.com/gravatar/ )'), 其中56行之后的那一堆默认头像的地址可以选择性修改一下。 ## QQ头像 然后参考了一篇文章[3],得到了从qq号获取头像地址的php代码。因为上面这个插件涉及到返回头像地址的功能,所以直接在这个插件里动刀。那么就通过检测邮箱中的QQ号来得到头像吧。 首先在`gravatarUrl`函数的起始位置添加一个判断,是否邮箱为qq号形式的邮箱[4]: // 检测是否是数字类型的QQ邮箱 preg_match('/^\d{4,11}@qq\.com$/i', $mail) 如果是的话,会返回真,否则为假。 接下来当返回为真的时候令函数直接返回QQ头像地址: if (preg_match('/^\d{4,11}@qq\.com$/i', $mail)) { $qq = substr($mail, 0, -7); $geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$qq; $qquser = file_get_contents($geturl); $str1 = explode('&k=', $qquser); $str2 = explode('&s=', $str1[1]); $k = $str2[0]; $qqimg = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100'; return $qqimg; } 以上是功能的大致实现,具体修改请参照提供下载的插件源码。因为对PHP语言不了解,所以并不确定这种方法是否最佳,修改后的插件仅供参考:[GitHub][1] ## 限制 需要用户邮箱设置为由QQ号组成的的QQ邮箱账号。 ## 参考链接: 1. https://handsl.cn/338.html 2. https://github.com/LT21/GravatarServer 3. https://qqdie.com/archives/get-qq-avatar-no-qq-number.html 4. https://www.n-1.cn/32.html [1]: https://github.com/OYCN/GravatarServer 最后编辑:2020年04月14日 ©著作权归作者所有 赞 0 分享
头像测试