TYPECHO WIKI
每一个作品都值得被记录

通过QQ邮箱获取并显示头像【不暴露QQ号】

Typecho维基君Typecho教程 • 1808次浏览 • 发布 2021-11-02 • 更新 2021-11-02

实现原理是获取json数据进行分割得出k值再进行重组,比较简单。

function Authorimg($email)
{
    $a='cdn.v2ex.com/gravatar';//gravatar头像源
    $b=str_replace('@qq.com','',$email);//替换qq邮箱
    if(stristr($email,'@qq.com')&&is_numeric($b)&&strlen($b)<11&&strlen($b)>4){
        $nk = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$b;//qq头像api
        $q = file_get_contents($nk);//读入文件
        $q = json_encode($nk);//编码json
        $k = explode("&k=",$q)[1];//分割出k值
        echo 'https://q.qlogo.cn/g?b=qq&k='.$k.'&s=100';//重组
    }else{
        $email= md5($email);
        echo 'https://'.$a.'/'.$email.'?';
    }
}

此方法实际使用貌似会影响效率,实测加载比较慢,于是就研究了下,得出第二种方法,获取HTTP请求所发送的标头的数组,不用读入整个文件不会影响效率。

function Authorimg($email)
{
    $a='cdn.v2ex.com/gravatar';//gravatar头像源
    $b=str_replace('@qq.com','',$email);
    if(stristr($email,'@qq.com')&&is_numeric($b)&&strlen($b)<11&&strlen($b)>4){
        $nk = 'https://s.p.qq.com/pub/get_face?img_type=3&uin='.$b;
        $c = get_headers($nk, true);
        $d = $c['Location'];
        $q = json_encode($d);
        $k = explode("&k=",$q)[1];
        echo 'https://q.qlogo.cn/g?b=qq&k='.$k.'&s=100';
    }else{
        $email= md5($email);
        echo 'https://'.$a.'/'.$email.'?';
    }
}

使用方法:

<?php Authorimg($comments->mail); ?>
广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,Typecho.Wiki所有文章均包含本声明。
厂商投放

【腾讯云】🎉五一云上盛惠!云服务器99元/月续费同价!

腾讯云五一劳动节海量产品 · 轻松上云!云服务器首年1.8折起,买1年送3个月!超值优惠,性能稳定,让您的云端之旅更加畅享。快来腾讯云选购吧!

广告
添加新评论 »

仅有一条评论 »

  1. [...]之前是可以显示出来的,正常情况只要去Gravatar官网邮箱注册并上传头像,然后使用就是官网的或者镜像源站+/avatar/邮箱的md5就可以访问了。你可能感兴趣Typecho干掉慢死的gravatar,用QQ头像和随机或者固定头像代替Typecho Gravatar头像镜像源修改教程,解决头像不显示问题通过QQ邮箱获取并显示头像【不暴露QQ号】Typecho 修改默认评论头像以及Gravatar[...]