企业微信获取 wx config、 agentConfig

import Vue from 'vue';
import {
  allocations
} from '@/api/configget';
import Router from '@/router'

export const wxAuth = async (pushindex, next) => {
  const wechatConfigUrl = location.href.split('#')[0]
  if (window.wechatConfigUrl === wechatConfigUrl && window.WWOpenData) {
    if (next) {
      next()
    }
    return Promise.resolve()
  } else {
    try {
      await wxConfigByCorp(wechatConfigUrl, pushindex, next)
      window.wechatConfigUrl = wechatConfigUrl
      return Promise.resolve()
    } catch (error) {
      return Promise.reject(error)
    }
  }
}

async function wxConfigByCorp(body, pushindex, next) {
  var data;
  await allocations(body).then((res) => {//请求Config、agentConfig需要用到的参数
    if (res.data.code == 1) {
      console.log("请求配置成功")
      data = res.data.data
    }else{
    }
  }).catch(()=>{
    // withoutCodeLoad()
  })
  const wxConfigParams = data.config
  const appSignature = data.agentConfig
  console.log('wxConfig?')
  await Vue.prototype.$wx.config({ // 鉴权(企业的身份与权限)
    beta: true, 
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: wxConfigParams.appId, // 必填,企业微信的corpID
    timestamp: wxConfigParams.timestamp, // 必填,生成签名的时间戳
    nonceStr: wxConfigParams.nonceStr, // 必填,生成签名的随机串
    signature: wxConfigParams.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
    jsApiList: [
      'shareAppMessage',
      'previewFile',
      'selectEnterpriseContact',
      'onMenuShareAppMessage',
      'invoke',
      'hideOptionMenu',
      'showOptionMenu'
    ] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
  });
  await Vue.prototype.$wx.ready(function () {
    console.log('wxConfig!')
    console.log('wx.agentConfig?')
    const u = navigator.userAgent;
    const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // 安卓
    const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
    if (isAndroid) {
      console.log('安卓手机');
      Vue.prototype.$wx.invoke('agentConfig', {
        corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
        agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境 写自己环境的agentid
        timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
        nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
        signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
        jsApiList: [
          'openUserProfile',
          'previewFile'
        ], // 必填
      }, function (res) {
        console.log('result', res);
      });
    }
    if (isIOS) {
      console.log('苹果手机');
      Vue.prototype.$wx.agentConfig({
        corpid: appSignature.appId, // 必填,企业微信的corpid,必须与当前登录的企业一致
        agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)生产环境
        timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
        nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
        signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
        jsApiList: [
          'openUserProfile',
          'previewFile'
        ], // 必填
        success(res) {
          console.log('agentConfig', res);
        },
        fail(res) {
          console.log('err', res);
          if (res.errMsg.indexOf('function not exist') > -1) {
            alert('版本过低请升级');
          }
        }
      });
    }




    if (!/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent)) {
      console.log('pc端')
      console.log(appSignature)
      Vue.prototype.$wx.agentConfig({ //鉴权(应用的身份与权限)
        corpid: appSignature.corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
        agentid: appSignature.agentid, // 必填,企业微信的应用id (e.g. 1000247)
        timestamp: appSignature.timestamp, // 必填,生成签名的时间戳
        nonceStr: appSignature.nonceStr, // 必填,生成签名的随机串
        signature: appSignature.signature, // 必填,签名,见附录-JS-SDK使用权限签名算法
        jsApiList: [], 
        success: function (res) { // 回调  //  wx.agentConfig成功回调后,WWOpenData 才会注入到 window 对象上面
          console.log('agentConfig!')
          console.log(res)
          console.log(window.WWOpenData)
          if (next) {
            next()
          }
          if (pushindex) {
            Router.push({
              path: '/'
            })
          }
        },
        fail: function (res) {
          console.log(res)
          if (res.errMsg.indexOf('function not exist') > -1) {
            alert('版本过低请升级')
          }
        }
      });
    }
  });
}

可以在路由拦截里执行

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值