本列子(微信登陆模块)使用教程
模块描述:本模块封装了微信开放平台的原生 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+服务端完成微信登陆,这样更加安全、靠谱。