[小程序开发:从客户端到服务器的一系列教程]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