背景
微信用戶更新頭像,原有的頭像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
如果用戶沒有走微信授權的過程,頭像就一直無法更新。像在微信裏面一般只在第一次進行授權操作,之後就不用再次授權,這樣頭像無效時該怎麼進行更新?
需要定時任務去更新用戶頭像?