[小程序开发:从客户端到服务器的一系列教程]1用户登录
小程序开发
浏览:521 次

本教程适用于对微信小程序有一定基础知识的学生。
服务器语言:PHP服务器框架:Thinkphp5.0
客户端:微信小程序框架
客户
//app.js
var httpclient=require(“utils/httpclient”);
app({
onLaunch:函数(){
this.loginWx();
},
/**
*缓存登录
*/
cacheLoginWx:函数(cb){
如果(this.userInfo==null){
this.loginWx(cb);
}其他{
typeofcb==“函数”&;cb(this.userInfo);
}
},
/**
*强制登录微信
*/
loginWx:函数(cb){
var th=这个
var代码=“”;
var openid=“”;
wx.showNavigationBarLoading();
wx.show加载({
标题:'正在尝试登录…',
掩码:true,
})
//调用登录界面
wx.登录({
成功:函数(obj){

wx.hideNavigationBarLoading();
代码=对象代码;
//console.log(代码);
//请求服务器交换密钥
httpclient.request(
that.url。head+that.url.wxOnLogin,
{
代码:code,
},
函数(res){
openid=res.openid;
那个获取用户信息(cb,openid);
},
函数(res){
安慰日志(“密钥错误”);
wx.hideNavigationBarLoading();
wx.hideLoading();
}
)
},
失败:函数(){
//登录失败
安慰日志(“授权失败”);
wx.hideNavigationBarLoading();
wx.hideLoading();
}
})
},
/**
*获取用户信息
*@param openid=null不分析加密数据
*/
getUserInfo:函数(cb,openid=null){
var=这个;
wx.showNavigationBarLoading();

//读取用户信息
wx.获取用户信息({
成功:函数(res){
wx.hideNavigationBarLoading();
安慰日志('授权成功!');
//控制台日志(res);
那个userInfo=res.userInfo;
//解密数据
if(openid!=空){
那个decodeWxUserInfo(openid,res,cb);
}其他{
typeofcb==“函数”&;cb(即.userInfo);
}
},
失败:函数(){
wx.hideNavigationBarLoading();
wx.hideLoading();
//登录失败
安慰日志('登录失败,出现网络错误');
typeofcb==“函数”&;cb(空);
}
})
},
/**
*请求解析微信加密数据
*/
decodeWxUserInfo:函数(openid,obj,cb){
var=这个;
var rawData=对象.rawData;
var signature=对象签名;
var encryptedData=obj.encryptedData;
var iv=目标iv;
wx.showNavigationBarLoading();
//
httpclient.request(

that.url。head+that.url.d