微信登陆模块(wxPlusv1.0.2)使用列子

作者:www.ipwas.cn 更新时间:2021-03-30 19:32
模块名 : wxPlus
本模块封装了微信开放平台的原生 SDK,集成了微信登录、微信分享功能;可用于实现微信账号登录,分享内容到朋友圈或好友、收藏等功能;轻松、高效集成微信功能到自己的 app 内。使自己的 app 和微信实现无缝链接。

本列子(微信登陆模块)使用教程

模块描述:本模块封装了微信开放平台的原生 SDK,集成了微信登录、微信分享功能;可用于实现微信账号登录,分享内容到朋友圈或好友、收藏等功能;轻松、高效集成微信功能到自己的 app 内。使自己的 app 和微信实现无缝链接。

模块地址:http://www.apicloud.com/mod_detail/wxPlus

不能同时使用的模块:pingpp


第一步:

使用微信登陆模块前,你需要对该模块进行配置(关于配置官方已做详细解答访问官方配置教程)按官方教程详细配置好。


第二步:

对接微信登陆,本次登陆列子是本地方式获取用户资料,下期推出 对接服务器方式获取用户资料

<script>
	
	function wxLogin(callback){
		var wxPlus = api.require('wxPlus'),codes = "",access = {};
		function auth(cal){
			var errorMsg = new Array("授权成功","您已取消授权",'您已拒绝授权','当前设备未安装微信客户端');
			wxPlus.auth({}, function(ret, err) {
			    if (ret.status) {
			        codes = ret.code;
					typeof cal == 'function' && cal(codes);
			    }else{
					typeof callback == 'function' && callback({status:false,type:1,msg:errorMsg[err.code]});
			    }
			});
		}
		function getToken(cal){
			var errorMsg = new Array("获取成功","apiKey值为空或非法",'apiSecret值为空或非法','code值为空或非法','网络超时');
			wxPlus.getToken({code:codes}, function(ret, err) {
			    if (ret.status) {
			        access = ret;
					typeof cal == 'function' && cal(codes);
			    } else {
			        typeof callback == 'function' && callback({status:false,type:2,msg:errorMsg[err.code]});
			    }
			});
		}
		
		function getUserInfo(){
			var errorMsg = new Array("获取成功","accessToken 过期",'openId非法','openId值为空','accessToken值为空','accessToken非法','网络超时');
			wxPlus.getUserInfo({
			    accessToken:access.accessToken,
			    openId:access.openId
			}, function(ret, err) {
			    if (ret.status) {
			        typeof callback == 'function' && callback({status:true,type:3,msg:errorMsg[0],data:ret});
			    } else {
			        typeof callback == 'function' && callback({status:false,type:3,msg:errorMsg[err.code]});
			    }
			});
		}
		
		function _initialization(){
			wxPlus.isInstalled(function(ret, err) {
			    if(ret.installed){
			        auth(function(){
						getToken(function(){
							getUserInfo();
						});
					});
			    }else{
					typeof callback == 'function' && callback({status:false,type:0,msg:'当前设备未安装微信客户端'});
			    }
			});
		}
		
		_initialization();
	}
	
	// 使用方法
	
	new wxLogin(function(ret){
		// ret.status = 当前是否完成了微信登陆,只有成功获取到用户资料才会返回 true
		// ret.type = 当前返回信息的步骤,0 = 初始,1 = 微信授权,2 = 微信拉取accessToken ,3 = 获取用户资料
		// ret.msg = 当前状态信息提示
		// ret.data = 用户资料 (需要注意的时候该字段仅限  ret.type == 3 && ret.status == true  的时候才会有)
		// ret.data 包含如下字段
		//{
		//    ret.data.status: true,      //布尔型;true||false
		//    ret.data.openid: '',        //字符串类型;普通用户的标识,对当前开发者帐号唯一
		//    ret.data.nickname: '',      //字符串类型;普通用户昵称
		//    ret.data.sex: 1,            //数字类型;普通用户性别,1为男性,2为女性
		//    ret.data.headimgurl: '',    //字符串类型;用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
		//    ret.data.privilege: [],     //数组类型;用户特权信息,如微信沃卡用户为(chinaunicom)
		//    ret.data.unionid: ''        //字符串类型;用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。
		//}
	});
	
</script>


当前微信登陆列子使用的是异步方式,因为过程需要拉取用户accessToken,用户资料。当然这只是一个示范,我们很不希望使用APP端方式取获取用户资料,因为这可能会产生用户资料、accessToken 、apikey、apiSecret等泄露,下期我们将推出app+服务端完成微信登陆,这样更加安全、靠谱。