// 在入口文件出初始化(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 中补充 cdpTenantId 和 cdpTeamId。
CDP 请求地址会根据全局 apiEnv 自动切换:
beta -> https://open.beta.custouch.com/platform/cdpcloud -> https://open.cloud.custouch.com/platform/cdpimport { 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 /proxybaseTarget 决定 SDK 内置登录 modal 默认走手机号还是邮箱验证码流程在 CDP 模式下:
checkAccess() 会先读取 SDK 内部缓存的 cdpSession,缺失时再回源查询当前 CDP 会话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 两种代理之间自动路由,业务页不需要传 modulecdpAuth 使用 Cookie Session,接口请求默认带 credentials: 'include'checkAccess() 自动登录模式下,业务页通常不需要自己再管理登录弹层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>