微信小程式的開發之授權功能
阿新 • • 發佈:2019-01-03
最近剛好在做一個小程式的簡單開發,故準備將其中的一些要點記錄下,以備日後參考
相信最近在開發小程式的小夥伴們都清楚,官方將授權功能修改了(一句mmp不知道能不能引起共鳴~)。害我找了半天的原因….
老式授權功能:
var openId = (wx.getStorageSync('openId'));
if (openId) {
wx.getUserInfo({
success: function (res) {
wx.request({
url: '',
data: res,
method: 'POST' ,
success: function (res) {
console.log('submit success');
// 判斷是否為渠道商
if (is) {
app.editTabBar2();
} else {
app.editTabBar();
}
},
fail: function (res) {
console.log('submit fail' );
},
complete: function (res) {
console.log('submit complete');
}
})
that.setData({
nickName: res.userInfo.nickName,
avatarUrl: res.userInfo.avatarUrl,
})
},
fail: function () {
// fail
console.log("獲取失敗!")
},
complete: function () {
// complete
console.log("獲取使用者資訊完成!")
}
})
} else {
wx.login({
success: function (res) {
console.log(res);
if (res.code) {
console.log(111);
wx.getUserInfo({
withCredentials: true,
success: function (res_user) {
console.log(res_user);
wx.request({
// 後臺介面地址
url: '',
data: {
code: res.code,
encryptedData: res_user.encryptedData,
iv: res_user.iv
},
method: 'GET',
header: {
'content-type': 'application/json'
},
success: function (res) {
// 判斷是否為渠道商
if (is) {
app.editTabBar2();
} else {
app.editTabBar();
}
// this.globalData.userInfo = JSON.parse(res.data);
that.setData({
nickName: res.data.nickName,
avatarUrl: res.data.avatarUrl,
})
wx.setStorageSync('openId', res.data.openId);
}
})
}, fail: function () {
wx.showModal({
title: '警告通知',
content: '您點選了拒絕授權,將無法正常顯示個人資訊,點選確定重新獲取授權。',
success: function (res) {
console.log(res);
if (res.confirm) {
wx.openSetting({
success: (res) => {
console.log(res);
// 如果使用者重新同意了授權登入
if (res.authSetting["scope.userInfo"]) {
console.log(22)
wx.login({
success: function (res_login) {
if (res_login.code) {
wx.getUserInfo({
withCredentials: true,
success: function (res_user) {
console.log(res_user)
wx.request({
url: '',
data: {
code: res_login.code,
encryptedData: res_user.encryptedData,
iv: res_user.iv
},
method: 'GET',
header: {
'content-type': 'application/json'
},
success: function (res) {
// 判斷是否為渠道商
if (is) {
app.editTabBar2();
} else {
app.editTabBar();
}
that.setData({
nickName: res.data.nickName,
avatarUrl: res.data.avatarUrl,
})
wx.setStorageSync('openId', res.data.openId);
}
})
}
})
}
}
});
}
}, fail: function (res) {
wx.showModal({
title: '提示',
content: '您點選了拒絕授權,將只能允許程式瀏覽功能',
success: function (res) {
if (res.confirm) {
console.log('使用者點選確定')
}
}
})
}
})
}
}
})
}, complete: function (res) {
}
})
}
}
})
}
新式授權功能(美名曰:提升使用者的體驗,不過也確實如此哦~)
需要事件操作呼叫才能授權
wxml
<button open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="onGotUserInfo">獲取使用者資訊</button>
js
/**
* 獲取使用者資訊
*/
onGotUserInfo: function (e) {
wx.setStorageSync("userInfo",e);
console.log(e);
console.log(e.detail)
console.log(e.detail.errMsg)
console.log(e.detail.userInfo)
console.log(e.detail.rawData)
},