新版小程序登录授权的方法新版小程序登录授权的方法
主要介绍了新版小程序登录授权的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随
小编过来看看吧
小程序自上线以来,官方一直在调整API,因此也出现了一批被废弃的接口,作为程序员的我们,此时此刻千万不能为这不断
的变化而感到头疼,应当与时俱进,不断的更新自己的知识储备和应用技能。
首先近期工作中需要做小程序框架升级,升级成美团开源的mpvue框架;然后因为微信小程序API的改版,所以也顺便将授权
登录的逻辑重新设计了。
新旧对比:新旧对比:
旧的方法:旧方法wx.getUserInfo按照用户登录时,弹出需要授权的弹窗,用户点击授权后才能使用。
新方法:Open-data的灵活使用方法,不会让你直接获得用户信息,而是小程序点击登录按钮获取用户头像,就是使用 button
组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息。
授权登录的逻辑参考了多个小程序,希望能找到最优的模式。下面会配合代码详细讲解整个流程。
模式概览模式概览
由于微信小程序的改版导致直接弹出授权的登录方式将逐渐不再支持,受影响的有wx.getUserInfo接口,以及wx.authorize接
口传入scope=”scope.userInfo”的情况。所以需要重新设计一套合适的登录授权流程。整体流程如下图:
主动登录主动登录
由于APP中有些页面默认需要登录的,如[个人中心]页面,需要登录获取到用户信息,才能继续操作。这样的页面就需要在每
次进入页面(onShow)时判断是否授权了。
profile页面
onShow () {
login(() => {
do something...
})
}
关于登录授权相关的逻辑都可以封装在handleLogin.js中
handleLogin.js
// 开始login
function login (callback) {
wx.showLoading()
wx.login({
success (res) {
if (res.code) {
// 登录成功,获取用户信息
getUserInfo(res.code, callback)
} else {
// 否则弹窗显示,showToast需要封装
showToast()
}
},
fail () {
showToast()
}
})
}
// 获取用户信息
function getUserInfo (code, callback) {
wx.getUserInfo({
// 获取成功,全局存储用户信息,开发者服务器登录
success (res) {
// 全局存储用户信息
store.commit('storeUpdateWxUser', res.userInfo)
postLogin(code, res.iv, res.encryptedData, callback)
},
// 获取失败,弹窗提示一键登录
fail () {
wx.hideLoading()
// 获取用户信息失败,清楚全局存储的登录状态,弹窗提示一键登录