首先,通过wx.qy.login获取到code,然后把这个code发送给我们自己写的接口api.getCompanyId,去请求到企业微信的id
wx.qy.login({
success(res) {
console.log("企业微信登录");
console.log(res);
if (res.code && res.code != 6000) { // 通过this.setData方法,将上方data中的参数进行设置 this.setData( { code: res.code, }, () => { /** * 通过下面这个接口去获取企业微信的id */ api.getCompanyId( { code: res.code, }, (res) => { console.log("企业微信的公司id"); console.log(res); /** * 企业微信的登录=====获取公司id成功后 调用企业微信登录接口 */ this.qyWxLogin(res); } ); } ); } //请求企微code失败 else if (res.code && res.code == 500) { $Toast({ content: "登录失败,请重试!", }); console.log("获取code失败!" + res.errMsg); } }, });
拿到code 和 企微的id后,可以通过自己写的方法去获取这个员工的信息了,把这些信息存到sessionStorage里
qyWxLogin: function(companyId) {
let self = this;
$Toast({
content: "正在登录...",
type: "loading",
}); /** * 企业微信环境 获取code 之所以要再请求一次code,是因为这个code只有5分钟的时效,为了防止过期,所以再请求一次就行了 */
wx.qy.login({
success(res) {
console.log(res);
if (res.code && res.code != 6000) {
self.setData({
code: res.code,
}, () => { //通过这个自己写的接口,传入code和企微id,去获取当前这个员工的信息 api.getUserInfo( { code: res.code, companyId: companyId, }, (res) => { console.log("接口返回的员工信息"); console.log(res); setTimeout(() => { $Toast.hide(); }, 100); if (res.access_token) { try { app.globalData.companyId = res.companyId; wx.setStorageSync("loginStatus", res.access_token); } catch (e) {}//可以跳转页面了 wx.reLaunch({ url: "../../pages/index/index", }); } else { self.setData({ visible: true, tips: "账号或密码错误!", }); } } ); } ); } else if (res.code && res.code == 500) { $Toast({ content: "登录失败,请重试!", }); console.log("获取code失败!" + res.errMsg); } }, }); },
这样就能在打开企微关联的自建应用的时候,自动静默登录程序了
注意:里面的一些接口是要自己实现的,用来从后端获取到信息,不要想着复制代码直接能用~这个只是方法逻辑的说明。