摆上官方给出授权流程图
对官方流程图理解:
步骤:
1、首先我们通过微信中 wx.login()方法 获取 临时登录凭证code (有效期只有5分钟),并通过wx.request()提交code给开发者服务器。
2、开发者服务器把code和appid回传到微信方服务器,来获取session_key & openid;
注意:session_key是微信服务器生成的针对用户数据进行加密签名的密钥,不应该进行传输到客户端,所以通过生成3rd_session(它就是一个key,把session_key+openid存为value)
//授权弹框
function onlogin() {
wx.login({
success(res) {
if (res.code) {
//发起网络请求
http.GetDataInfo('wxauth/getsessionkey', 'get', {
appid: app.data.AppID,
code: res.code
}, function(result) {
if (result.data.code == 10000) {
//获取用户信息
getUserInfos(result.data.data);
} else {
wx.showToast({
icon: 'none',
title: '获取微信用户信息失败',
duration: 1000
})
}
});
} else {
wx.showToast({
icon: 'none',
title: '登录失败!',
duration: 1000
})
}
}
})
};
2、接着我们通过微信中wx.getUserInfo()方法获取如下信息,把session_key、encryptedData和iv传给后台服务器,来获取用户token等信息
//获取用户信息
function getUserInfos(uuid) {
wx.getUserInfo({
success: function(res) {
var encryptedData = res.encryptedData;
var iv = res.iv;
app.globalData.userInfo = res.userInfo;
http.GetDataInfo('wxauth/wxsmallusersave', 'post', {
appid: app.data.AppID,
uuid: uuid,
type: 'userinfo',
encryptedData: encryptedData,
iv: iv
}, function(result) {
if (result.data.code == 10000) {
wx.setStorageSync('token', result.data.data.token);
} else {
wx.showToast({
icon: 'none',
title: '获取token失败',
duration: 1000
})
}
});
}
})
};