背景
微信用户更新头像,原有的头像url会失效,这时需要对失效的头像做一个处理。
方案一
微信官方文档中 授权后接口调用有下列描述:
请注意,在用户修改微信头像后,旧的微信头像 URL 将会失效,因此开发者应该自己在获取用户信息后,将头像图片保存下来,避免微信头像 URL 失效后的异常情况。
这里的建议是在本地服务器存储一遍用户头像,这样就不会产生用户头像失效的情况。同时默认用户的头像为第一次绑定时的头像。
方案二
判断用户头像失效的状态,在调用微信授权时,更新头像为获取的最新用户头像。
// url 一个无效头像
url := “http://wx.qlogo.cn/mmopen/kr9ShguI1uzOvkB15VXrdPWegpCW6OHd9sbdgPmicVTIMibT3bMd226KZb4ibv1XQDjV8lH0DdpjZRQ6vkO47zMibjU8cEQWGhrD/0”
// url2 一个正常头像地址
url2 := ”https://wx.qlogo.cn/mmopen/vi_32/fvicdicI5zNc0xEYxhxp77qOOawaBVJ9sT01XJVcppvcnLIibOm3WlzHGkVYkfdoEnibHviclpib7AEZFF9kxWTqH29g/132“
这里根据返回头部里的X-Errno
字段进行判断是否有效。
// isValidAvatar 验证当前头像是否有效
func isValidAvatar(url string) bool {
header, err := http.Get(url)
if err != nil || header.Header["X-Errno"] != nil {
return false
}
return true
}
todo
如果用户没有走微信授权的过程,头像就一直无法更新。像在微信里面一般只在第一次进行授权操作,之后就不用再次授权,这样头像无效时该怎么进行更新?
需要定时任务去更新用户头像?