微信小程式使用者管理
阿新 • • 發佈:2019-02-20
使用者唯一碼獲取
使用者管理的兩個必要條件是:
- 能夠獲得使用使用者的唯一id,小程式裡面這個id是openid。
- 使用者的每次資料上傳都把這個唯一id附帶上傳,這樣伺服器就知道是誰的操作
通過wx.login函式,可以在網路結果回撥函式中獲得一個臨時的使用者的碼。這個碼再傳到服務端,用這個碼使用http的api請求真正的使用者唯一碼openid。
每個使用者的openid不會發生變化,可以長期儲存。但是同一個使用者針對不同小程式的openid是不同的。如果需要使用者針對所有小程式都相同的id,可以使用unionid。詳情見:
把這個openid傳回客戶端,客戶端儲存openid,以後每次使用者操作結果上傳的時候都把這個openid附帶上。
使用者微信資訊獲取
出了使用者唯一id以外,如果還想獲得一些使用者微信賬號的資訊,比如微信暱稱,微信頭像等,需要使用wx.getUserInfo函式。並在返回的回撥函式中,記錄這些資訊。
wx.getUserInfo需要使用者手動同意程式獲取資訊。發起同意請求的方式是使用專門的button控制元件:
<button open-type="getUserInfo" bindgetuserinfo="getUserCallBack"> 獲取頭像暱稱 </button>
open-type="getUserInfo"代表這個button點選後,會彈出請求使用者同意的介面。並且在使用者同意後,會回撥getUserCallBack這個使用者自定義的函式。
返回的函式中包含使用者頭像圖片的地址,使用這個地址就可以顯示使用者頭像了。
總結:有兩種方式可以獲得使用者微信資訊:
- 使用wx.getUserInfo,通過程式發起資訊請求。前提是使用者必須使用過button方式同意過請求一次。
- 使用button方式,通過使用者發起請求。
使用者加密資訊獲取
要獲得使用者的openid,出了使用wx.login獲得臨時碼,然後在服務端再獲得真實的openid外,也可以通過wx.getUserInfo在客戶端獲取。
但是客戶端獲得的openid是加密了的,還是需要把加密資料傳輸回伺服器,解碼後才能得到openid。但是解密的時候需要走wx.login流程才能獲得的sessionKey。所以使用這種方法並不能代替wx.login流程。詳情參考: