我们如果做微信相关业务的时候,会获取到用户的logo。但是这个logo用户可能会更换,更换后再次访问logo地址就会出现上面的头像。
这里提供两种解决方案来做处理,具体根据业务来
- 每天跑一个定时任务。匹配用户的头像和上述图像相识度。如果是同一张图片。那么请求微信那边接口去更新用户最新的logo。代码如下
<?php
/*
* wx_url 微信头像
* $local_b 本地空头像
*/
function checkLogo($wx_url){
$content = file_get_contents($wx_url);
file_put_contents("./a.png", $content);
if(sha1_file("./a.png") == "eef4f463f08c5d1bfc004533ff9af936041ee362") {
unlink("./a.png");
return true;
}else {
unlink("./a.png");
return false;
}
}
var_dump(checkLogo("https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTKVibyIUBicWeku0LTyNwRCOBXfc4nibQWSRJGRJriadL1tRNYbqbYeagfVgyia7iaHqca7XuuLQtCLlXKg/132");
- 第二种方法,在用户第一次登录授权的时候,我们拿到头像直接存到oss。这样就保证用户的头像永不失效。
总结:我倾向于第一种方法,第二种方法在业务上不友好的。用户换了头像,应该在我们APP里面也同步更换。尽管更换时间可能存在延迟。比如第一种,我们5天跑一次。