小程式獲取unionid的坑 unionid返回為null
同一個微信開放平臺下的相同主體的App、公眾號、小程式的unionid是相同的,這樣就可以鎖定是不是同一個使用者。微信針對不同的使用者在不同的應用下都有唯一的一個openId, 但是要想確定使用者是不是同一個使用者,就需要靠unionid來區分。
這裡注意了:要想獲取unionid就必須要繫結微信開放平臺
首先,前端呼叫wx.login的時候會返回一個code,這個code傳到後臺的時候。
後臺呼叫微信的介面(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code)傳入 code,appid,secret去換取到openid,session_key以及unionid等資訊。
這裡就需要注意了:官方文件上說的是,如果使用者已經關注公眾號,或者曾經登入過App或公眾號,則使用者開啟小程式時,開發者可以直接通過wx.login獲取到該使用者UnionID,無須使用者再次授權。
這裡分為兩種情況
(1)用code換取的時候,返回了unionid,這樣就皆大歡喜了
(2)悲劇的情況,unionid返回為null,這時候你再去看官方文件的時候,發現有針對這種情況的方法。就是需要前端再去調wx.getUserInfo()這個介面。這時候微信會返回很多資料(詳情見微信官方文件:https://mp.weixin.qq.com/debug/wxadoc/dev/api/open.html),這些資料裡面有一個