微信小程式 獲取使用者資訊(包括openId等敏感資訊)
阿新 • • 發佈:2019-02-09
想來跟微信小程式也是有緣。
現在在公司主要負責起了小程式這塊。
- 獲取使用者的基本資訊
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,結束。