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