@custouch/jssdk
    Preparing search index...

    @custouch/jssdk

    // 在入口文件出初始化(main.ts)
    import {initBase,initWxKit,initWwKit} from '@custouch/jssdk'

    /** -----以下初始化方法请按需加载------ */

    // 定义全局配置、初始化caKit,定义在最前面
    initBase({
    appId: window.env.APP_ID,
    uaId: window.env.UA_ID
    //切换为生产环境
    // mode:'production'
    //切换api为cloud
    // apiEnv:'cloud'
    })
    // 定义微信配置、初始化wxKit
    initWxKit({ defaultAccess: { notWechatLimit: 'userinfo', wechatLimit: 'userinfo' }, })
    // 定义企微配置、初始化wwKit
    initWwKit({ corpId: window.env.CORP_ID, agentId: window.env.AGENT_ID })
    initBase({
    //切换为cloud api
    apiEnv:'cloud'
    // 手动切换为生产环境(慎重)
    // env:'production'
    })

    当签到码页面需要在非微信环境下走 CDP 登录和代理请求时,需要在 initBase 中补充 cdpTenantIdcdpTeamId

    CDP 请求地址会根据全局 apiEnv 自动切换:

    • beta -> https://open.beta.custouch.com/platform/cdp
    • cloud -> https://open.cloud.custouch.com/platform/cdp
    import { initBase, initWxKit, checkAccess, cdpAuth, signCode } from '@custouch/jssdk'

    initBase({
    appId: window.env.APP_ID,
    uaId: window.env.UA_ID,
    apiEnv: 'beta',
    cdpTenantId: window.env.TENANT_ID,
    cdpTeamId: window.env.TEAM_ID
    })

    initWxKit({
    defaultAccess: {
    wechatLimit: 'userinfo',
    notWechatLimit: 'base',
    baseTarget: 'phone'
    },
    accessType: 'signInCode'
    })

    await checkAccess()

    checkAccess() 会自动解析签到码页面是否启用 CDP 代理:

    • 微信环境下保持原有微信代理流程
    • 非微信环境下,且 notWechatLimit === 'base' 时,signCode.* 会自动切到 CDP /proxy
    • baseTarget 决定 SDK 内置登录 modal 默认走手机号还是邮箱验证码流程

    在 CDP 模式下:

    • checkAccess() 会先读取 SDK 内部缓存的 cdpSession,缺失时再回源查询当前 CDP 会话
    • 如果当前未登录,SDK 会自动弹出内置验证码登录 modal
    • modal 不可关闭,登录成功后 checkAccess() 才会继续返回
    • 如果当前会话里已经有有效的 contactId,则不会重复弹出登录 modal

    如果需要手动调试或自定义串联流程,仍可以直接调用以下协议层 API:

    // 发送验证码
    const { verificationId } = await cdpAuth.sendVerificationCode({
    type: 'sms',
    phone: '13800138000',
    areaCode: '86'
    })

    // 手机验证码登录
    await cdpAuth.loginByPhoneCode({
    phone: '13800138000',
    code: '123456',
    verificationId
    })

    // 查询当前 CDP 会话
    const session = await cdpAuth.me()

    // 统一的签到码业务请求
    await signCode.view({ projectId: 1 })
    await signCode.query({ projectId: 1, key: 'Phone', value: '13800138000' })
    await signCode.sign({ projectId: 1, detail: { Phone: '13800138000' } })
    await signCode.getSignInfo({ projectId: 1, onlySign: true })
    await signCode.checkSignStatus({ projectId: 1 })

    说明:

    • signCode 在微信和 CDP 两种代理之间自动路由,业务页不需要传 module
    • cdpAuth 使用 Cookie Session,接口请求默认带 credentials: 'include'
    • checkAccess() 自动登录模式下,业务页通常不需要自己再管理登录弹层
    • 顶层导出为 namespace:cdpAuth.*signCode.*
    import {wxKit,wwKit} from '@custouch/jssdk'
    // 微信环境登录后获取openid
    wxKit.openId

    // 企业微信登录后获取memberid
    wwKit.memberId
    // 获取授权信息配置登录后获取微信用户信息
    checkAccess().then(async ()=>{
    const userinfo = await wxKit.userInfo()
    })

    // 获取授权信息配置登录后获取企业微信用户信息
    wwKit.login().then(async ()=>{
    const userinfo = await wwKit.userInfo()
    })
    this.caKit.RequestCollect({title:'需要上报的标题'})
    
    // false为不自动初始化jsconfig
    const wxKit = initWxKit({ ... }, false)
    /**
    * 手动调用,载入自定义config并隐藏所有菜单
    * hideAllMenu:true为隐藏功能菜单
    * 注意这种情况下需要关闭自动初始化jsconfig,见上方代码
    * */
    wxKit.initConfig({wx.WxConfig}, { hideAllMenu: true })
    // 判断sdk是否加载完成
    await wxKit.sdkCompleted
    // wx.ready
    wxKit.sdk.ready(()=>{

    })
    # 获取typescript支持
    yarn add @wecom/jssdk -D
    // wx.onMenuShareAppMessage
    wwKit.sdk.onMenuShareAppMessage({
    ...
    })
    import {FetchRequest} from '@custouch/jssdk'
    const request = new FetchRequest({
    ...
    })
    request.get(...)
    request.post(...)

    调用showToast需要载入,在企业/微信当前页扫码登录会用到

    import '@custouch/jssdk/dist/style.css'
    
    <script src="https://oss.cloud.custouch.com/static/v1/jssdk/0.4.17-5.js"></script>
    <script>
    // 通过window.jssdk暴露接口
    const {initBase} = window.jssdk
    </script>