?
開發(fā)接口
登錄
wx.login
wx.checkSession
簽名加密
小程序登錄
小程序可以通過(guò)微信官方提供的登錄能力方便地獲取微信提供的用戶身份標(biāo)識(shí),快速建立小程序內(nèi)的用戶體系。
登錄流程時(shí)序
小程序,開發(fā)者服務(wù)器,微信接口服務(wù)
wx.login()獲取code
wx.request()發(fā)送code
登錄憑證校驗(yàn)接口
appid+appsecret+code
session_key+openid等
自定義登錄
與openid,session_key關(guān)聯(lián)
?
?
?
微信登錄授權(quán):
wx.authorize
提前向用戶發(fā)起授權(quán)請(qǐng)求,調(diào)用后會(huì)立刻彈窗詢問用戶是否同意授權(quán)小程序使用某項(xiàng)目功能或獲取用戶的某些數(shù)據(jù),但不會(huì)實(shí)際調(diào)用對(duì)應(yīng)的接口,如果用戶之前就已經(jīng)同意授權(quán),則不會(huì)出現(xiàn)彈窗。
?
?
?
- ?
<button open-type="getUserInfo"></button>
userInfo參數(shù)說(shuō)明:
nickName
avatarUrl
gender
city
province
country
language
?
- ?
wx.login({
success (res) {
if (res.code) {
//發(fā)起網(wǎng)絡(luò)請(qǐng)求
wx.request({
url: 'https://test.com/onLogin',
data: {
code: res.code
}
})
} else {
console.log('登錄失?。?#39; + res.errMsg)
}
}
})
wx.checkSession(Object object)
檢查登錄態(tài)是否過(guò)期。
?
- ?
wx.checkSession({
success () {
//session_key 未過(guò)期,并且在本生命周期一直有效
},
fail () {
// session_key 已經(jīng)失效,需要重新執(zhí)行登錄流程
wx.login() //重新登錄
}
})
wx.getUserInfo(Object object)
獲取用戶信息。
- ?
// 必須是在用戶已經(jīng)授權(quán)的情況下調(diào)用
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
}
})
- ?
<!-- 如果只是展示用戶頭像昵稱,可以使用 <open-data /> 組件 -->
<open-data type="userAvatarUrl"></open-data>
<open-data type="userNickName"></open-data>
<!-- 需要使用 button 來(lái)授權(quán)登錄 -->
<button wx:if="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">授權(quán)登錄</button>
<view wx:else>請(qǐng)升級(jí)微信版本</view>
Page({
data: {
canIUse: wx.canIUse('button.open-type.getUserInfo')
},
onLoad: function() {
// 查看是否授權(quán)
wx.getSetting({
success (res){
if (res.authSetting['scope.userInfo']) {
// 已經(jīng)授權(quán),可以直接調(diào)用 getUserInfo 獲取頭像昵稱
wx.getUserInfo({
success: function(res) {
console.log(res.userInfo)
}
})
}
}
})
},
bindGetUserInfo (e) {
console.log(e.detail.userInfo)
}
})
?
小程序登錄
- ?
const app = getApp()
Page({
data: {
},
onLoad: function(params) {
},
// 登錄
doLogin: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.userInfo)
console.log(e.detail.rawData)
wx.login({
success (res) {
if (res.code) {
//發(fā)起網(wǎng)絡(luò)請(qǐng)求
wx.request({
url: 'https://test.com/onLogin',
data: {
code: res.code
}
})
} else {
console.log('登錄失??!' + res.errMsg)
}
}
})
}
})
- ?
<view>
<button class="goRegistBtn" type="warn" open-type='getUserInfo' bindgetusrinfo="doLogin">微信登錄</button>
</view>
?
wx.getUserInfo(Object object)
?
?
?
?
- ?
App({
serverUrl: "",
userInfo: null,
setGlobalUserInfo: function(user) {
wx.setStorageSync("userInfo", user);
},
getGlobalUserInfo: function() {
return wx.getStorageSync("userInfo");
},
})
獲取微信session_key和secret
?
?
?
?
本文摘自 :https://blog.51cto.com/u