APICloud 微信受权登陆

 

使用此模块以前建议先配置 config.xml 文件,配置完毕,需经过云端编译生效,配置方法以下:ajax

 

  • 名称:wx
  • 参数:urlScheme、apiKey、apiSecret
  • 配置示例:
<feature name="wx">
    <param name="urlScheme" value="wxd0d84bbf23b4a0e4"/>
    <param name="apiKey" value="wxd0d84bbf23b4a0e4"/>
    <param name="apiSecret" value="a354f72aa1b4c2b8eaad137ac81434cd"/>
  </feature>
  • 字段描述:api

    urlScheme:(必须配置)用于实现应用间跳转及数据交换,本应用能够启动微信客户端,也能够从微信客户端跳回本应用。urlScheme 的 value 值是从微信开放平台获取的 appid。appid 申请方法参考微信开放平台接入文档数组

    apiKey:(必须配置)从微信开放平台获取的 appid,值与 urlScheme 相同。appid 申请方法参考微信开放平台接入文档微信

    apiSecret:从微信开放平台获取的 secret。获取 accessToken 时须要配置此项。appid 申请方法参考微信开放平台接入文档网络

 

 

引入wx模块app

var wx = api.require('wx');

判断当前手机是否安装微信客户端异步

wx.isInstalled(function(ret, err) {
    if (ret.installed) {
        alert("当前设备已安装微信客户端");
    } else {
        alert('当前设备未安装微信客户端');
    }
});

auth 登陆受权(用于实现第三方登陆ide

auth({params}, callback(ret, err))ui

params

apiKey:url

  • 类型:字符串
  • 描述:(可选项)从微信开放平台获取的 appid,若不传则从当前 widget 的 config.xml 中读取,不传或传入错误的 apiKey,则没法打开微信进行登陆。

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
  status: true,       //布尔型;true||false
  code: ''           //字符串类型;getToken 接口需传入此值,用于换取 accessToken
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 0     //数字类型;
                //错误码:
                //-1(未知错误),
                //0(成功,用户赞成)
                //1 (用户取消)
                //2 (用户拒绝受权)
                //3 (当前设备未安装微信客户端)
}

示例代码

var wx = api.require('wx');
wx.auth({
    apiKey: ''
}, function(ret, err) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    } else {
        alert(err.code);
    }
});

getToken获取受权 accessToken(须要登陆受权成功

getToken({params}, callback(ret, err))

params

apiKey:

  • 类型:字符串
  • 描述:(可选项)从微信开放平台获取的 appid,若不传则从当前 widget 的 config.xml 中读取。

apiSecret

  • 类型:字符串
  • 描述:(可选项)从微信开放平台获取的 secret,若不传则从当前 widget 的 config.xml 中读取。

code

  • 类型:字符串
  • 描述:经过 auth 接口受权成功后返回的 code 参数

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
  status: true,      //布尔型;true||false
  accessToken: '',   //字符串类型;接口调用凭证,传给 getUserInfo 接口 获取用户信息;有效期2小时
  dynamicToken: '',  //字符串类型;当 accessToken 过时时把该值传给 refreshToken 接口刷新 accessToken 的有效期。dynamicToken 的有效期为30天
  expires: 7200,     //数字类型;accessToken 有效期,单位(秒)
  openId: ''         //字符串类型;受权用户惟一标识
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 0     //数字类型;
                //错误码:
                //-1(未知错误),
                //0 (成功)
                //1 (apiKey值为空或非法)
                //2 (apiSecret值为空或非法)
                //3 (code值为空或非法)
                //4 (网络超时)
}

示例代码

var wx = api.require('wx');
wx.getToken({
    apiKey: '',
    apiSecret: '',
    code: "12346857684"
}, function(ret, err) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    } else {
        alert(err.code);
    }
});

补充说明

此接口须要访问网络,异步调用 callback 须要一段时间才能返回 accessToken

getUserInfo获取用户信息(须要获取 accessToken 成功

params

accessToken:

  • 类型:字符串
  • 描述:getToken 接口或 refreshToken 接口成功获取的 accessToken 值

openId:

  • 类型:字符串
  • 描述:getToken 接口或 refreshToken 接口成功获取的 openId 值

lang:

  • 类型:字符串
  • 描述:(可选项)国家地区语言版本
  • 默认:zh_CN
  • 取值范围:
    • zh_CN 简体
    • zh_TW 繁体
    • en 英语

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    status: true,      //布尔型;true||false
    openid: '',        //字符串类型;普通用户的标识,对当前开发者账号惟一
    nickname: '',      //字符串类型;普通用户昵称
    sex: 1,            //数字类型;普通用户性别,1为男性,2为女性
    headimgurl: '',    //字符串类型;用户头像,最后一个数值表明正方形头像大小(有0、4六、6四、9六、132数值可选,0表明640*640正方形头像),用户没有头像时该项为空
    privilege: [],     //数组类型;用户特权信息,如微信沃卡用户为(chinaunicom)
    unionid: ''        //字符串类型;用户统一标识。针对一个微信开放平台账号下的应用,同一用户的unionid是惟一的。
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
    code: 0     //数字类型;
                //错误码:
                //-1(未知错误),
                //0 (成功),
                //1 (accessToken 过时),
                //2  (openId非法),
                //3  (openId值为空),
                //4     (accessToken值为空),
                //5     (accessToken非法)
                //6     (网络超时)
}

示例代码

var wx = api.require('wx');
wx.getUserInfo({
    accessToken: '',
    openId: ''
}, function(ret, err) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    } else {
        alert(err.code);
    }
});

 

给你们讲下 本身作到列子,

apiKey和apiSecret 都是官网提供的,不能受权登陆获取到用户信息

function initWXBind() {
	
     var wx = api.require('wx');
     var code = '';
	wx.isInstalled(function(ret, err) {
	    if (!ret.installed) {
	        alert("当前设备未安装微信客户端");
	    } else {
	    	wx.auth({
			    apiKey: 'wxd0d84bbf23b4a0e4'
			}, function(ret, err) {
			    if (ret.status) {
			        wx.getToken({
					    apiKey: 'wxd0d84bbf23b4a0e4',
					    apiSecret: 'a354f72aa1b4c2b8eaad137ac81434cd',
					    code: ret.code
					}, function(ret, err) {
					    if (ret.status) {
					    	 api.showProgress({
	                            style: 'default',
	                            animationType: 'fade',
	                            title: '受权成功',
	                            text: '绑定处理中...',
	                            modal: true
	                        });
	                         wx.getUserInfo({
	                            accessToken: ret.accessToken,
	                            openId: ret.openId
	                        }, function(ret, err) {
	                            if (ret.status) {
	                                // 绑定成功 
	                                WXbindAccount(ret.openid);
	                                api.hideProgress();
	                                
	                               
	                            }
	                        }); 
					    } else {
					        alert(err.code);
					    }
					});
		    } 
			});
	    }
	});
}

 

调用接口,传参

function WXbindAccount(参数1) {  
    api.ajax({
        url: '接口',
        method: 'get',
        data: {
            values: { 
                openid: 参数, 
            }
        }
    }, function(ret, err) { 
        if (ret.retCode == 200) {
        	$api.setStorage("保存当前user",ret.data);
        	api.closeWin({
            	name:"login"
            }); 
        	return true; 
        } 
    });
}
相关文章
相关标签/搜索