1. 程式人生 > >微信小程式 獲取使用者資訊(包括openId等敏感資訊)

微信小程式 獲取使用者資訊(包括openId等敏感資訊)

想來跟微信小程式也是有緣。
現在在公司主要負責起了小程式這塊。

  1. 獲取使用者的基本資訊
    wx.getUserInfo(OBJECT)獲取使用者資訊
wx.getUserInfo({
  success: function(res) {
    var userInfo = res.userInfo //使用者基本資訊
    var nickName = userInfo.nickName //使用者名稱
    var avatarUrl = userInfo.avatarUrl //頭像連結
    var gender = userInfo.gender //性別 0:未知、1:男、2:女
    var
province = userInfo.province //所在省 var city = userInfo.city //所在市 var country = userInfo.country //所在國家 } })

2.獲取系統資訊
wx.getSystemInfo(OBJECT)獲取系統資訊

wx.getSystemInfo({
  success: function(res) {
    console.log(res.model)    //  手機型號
    console.log(res.pixelRatio) 
    console.log(res.windowWidth
) console.log(res.windowHeight) console.log(res.language) console.log(res.version) console.log(res.platform) console.log(res.system) // 作業系統版本 } })

3.獲取openId (使用者唯一標識)和session_key
wx.login(OBJECT) 呼叫介面獲取登入憑證(code)進而換取使用者登入態資訊,包括使用者的唯一標識(openid) 及本次登入的 會話金鑰(session_key)。

這裡寫圖片描述

 wx.login({
        //獲取code
success: function (res) { var code = res.code; //返回code console.log(code); var appId = '...'; var secret = '...'; wx.request({ url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' + code + '&grant_type=authorization_code', data: {}, header: { 'content-type': 'json' }, success: function (res) { var openid = res.data.openid //返回openid console.log('openid為' + openid); } }) } })

如果在配置伺服器域名中填寫了“api.weixin.qq.com”會出現上述錯誤提示。出於安全考慮,為避免開發者將AppSecret放置在小程式的前端程式碼內,平臺禁止設定此域名。
小程式的開發者密碼(AppSecret)是一個非常重要的欄位,使用該密碼可以呼叫小程式的所有後臺介面。請不要將該欄位放置在微信小程式的前端程式碼中,因為微信手機客戶端容易被反編譯並輕鬆獲得Appsecret,造成重大的安全威脅。開發者應將Appsecret儲存到後臺伺服器中,通過伺服器使用Appsecert獲取Accesstoken。微信公眾平臺小程式後臺的伺服器地址設定也將禁止將“api.weixin.qq.com”域名的配置,所有對於“api.weixin.qq.com”域名下的介面請求請全部通過後臺伺服器發起,請勿直接通過小程式的前端程式碼發起。

所以解決辦法就是把code傳給後臺,讓後臺去請求微信的官方介面獲得openId和session-key。

其實微信小程式官方的登入時序圖也是這樣畫的
這裡寫圖片描述
將code傳至後臺伺服器,讓伺服器去訪問微信伺服器得到openId和session_key。

OK,結束。