# 工具 API

主要提供两个 API,负责获取用户身份以及初始化 JS-SDK。

# checkRedirect

该函数用于检查是否需要重定向,并自动获取 userId,缓存到 Cookie 的函数。

调用后上面方法后,页面 Cookie 为 document.cookie = 'userId=xxx'。 你可以通过 js-cookieCookies.get('userId') 来取得当前 userId

import {checkRedirect} from 'wecom-sidebar-jssdk';

// 侧边栏配置
const config = {
  // 在 https://work.weixin.qq.com/wework_admin/frame#profile 这里可以找到
  corpId: 'xxx',
  // 在 https://work.weixin.qq.com/wework_admin/frame#apps 里的自建应用里可以找到
  agentId: 'yyy'
}

// code 换取用户身份
const fetchUserId = async (code: string): Promise<string> => {
  const response = await axios.request({
    method: 'GET',
    url: '/user',
    params: {code}
  });
  return response.data.userId;
}

await checkRedirect(config, fetchUserId)
参数 描述 类型
config 侧边栏基础配置 { corpId: string; agentId: string}
getUserId 远程用 code 获取 userId 的方法 (code: string) => Promise<string>

# initSdk

初始化 JS-SDK 的重要方法!自动包含了 wx.configwx.readywx.agentConfig 的逻辑,并支持 Promise 异步,帮你一步到位初始化。

import {initSdk, SignRes} from "wecom-sidebar-jssdk";

// 侧边栏配置
const config = {
  // 在 https://work.weixin.qq.com/wework_admin/frame#profile 这里可以找到
  corpId: 'xxx',
  // 在 https://work.weixin.qq.com/wework_admin/frame#apps 里的自建应用里可以找到
  agentId: 'yyy'
}

// interface SignRes {
//   meta: {
//     nonceStr: string,
//     timestamp: number,
//     url: string,
//   },
//   app: {
//     signature: string, // 应用 jsapi_ticket 生成的签名
//   },
//   corp: {
//     signature: string, // 企业的 jsapi_ticket 生成的签名
//   },
// }

// 获取签名
export const fetchSignatures = async () => {
  const response = await axios.request<SignRes>({
    method: 'GET',
    url: '/signatures',
    params: {
      url: window.location.href
    }
  })

  return response.data;
}

await initSdk(config, fetchSignatures);
参数 描述 类型
config 侧边栏基础配置 { corpId: string; agentId: string}
fetchSignatures 远程获取企业和应用的生成的签名以及 noncwStrtimetamp 的方法 () => Promise<SignRes>

此方法最好放在 checkRedirect 之后调用,不然会出现 WxBridge 找不到的问题。