@tencent-ai/workbuddy-cloud-sdk 0.1.3-dev.c090db7.202610050023 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +124 -0
- package/lib/chunk-VB3AB5XH.js +8476 -0
- package/lib/chunk-YTD42NT4.cjs +8476 -0
- package/lib/client-Cm8AjYu_.d.cts +6734 -0
- package/lib/client-Cm8AjYu_.d.ts +6734 -0
- package/lib/index.cjs +14 -8304
- package/lib/index.d.cts +3 -6703
- package/lib/index.d.ts +3 -6703
- package/lib/index.global.js +3 -4
- package/lib/index.js +24 -8269
- package/lib/miniprogram.cjs +244 -8450
- package/lib/miniprogram.d.cts +33 -6626
- package/lib/miniprogram.d.ts +33 -6626
- package/lib/miniprogram.js +100 -8274
- package/miniprogram_dist/miniprogram.js +5 -15029
- package/package.json +45 -46
- package/lib/index.cjs.map +0 -1
- package/lib/index.global.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/miniprogram.cjs.map +0 -1
- package/lib/miniprogram.js.map +0 -1
package/README.md
CHANGED
|
@@ -72,3 +72,127 @@ const cloud = createMiniProgramWorkBuddyCloud({
|
|
|
72
72
|
SDK 通过 `package.json#miniprogram` 提供微信专用的 CommonJS `.js` 产物,
|
|
73
73
|
其中已打包运行时依赖。现有 Web / Node 的根入口和 `/miniprogram` 子入口保持不变。
|
|
74
74
|
WorkBuddy H5 预览会注入 SDK,预览成功不能替代微信项目的安装、构建 npm 验证。
|
|
75
|
+
|
|
76
|
+
### WorkBuddy 账号登录(原生小程序,#136265)
|
|
77
|
+
|
|
78
|
+
本节接口是 SDK 与 Genie BaaS 的配套契约。
|
|
79
|
+
SDK 直接跳转官方小程序,登录按钮不再先请求 BaaS 创建授权。
|
|
80
|
+
使用 `createMiniProgramWorkBuddyCloud` 初始化时,增加 BaaS 公开配置中的复合 OAuth client_id:
|
|
81
|
+
|
|
82
|
+
```js
|
|
83
|
+
const cloud = createMiniProgramWorkBuddyCloud({
|
|
84
|
+
endpoint: publicConfig.endpoint,
|
|
85
|
+
publishableKey: publicConfig.publishableKey,
|
|
86
|
+
workBuddyOAuthClientId: publicConfig.workBuddyOAuthClientId,
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
`workBuddyOAuthClientId` 是 `{开平 client_id}_{Genie BaaS 子应用ID}` 的完整值,
|
|
91
|
+
由 BaaS 按环境及应用下发;应用原样传入,不从 `publishableKey` 解析或自行拼接。
|
|
92
|
+
缺少此项时仅 WorkBuddy 登录返回配置错误,其他认证方式和云服务仍可使用。
|
|
93
|
+
官方小程序入口由 SDK 内部维护,应用登录时只提供自己的返回页面。
|
|
94
|
+
SDK 在发起登录时读取 `wx.getAccountInfoSync().miniProgram.envVersion`,通过授权页 query
|
|
95
|
+
`envVersion` 传递客户当前运行的 `develop` / `trial` / `release` 版本,供官方小程序回跳使用。
|
|
96
|
+
这是授权页地址参数;去程微信跳转参数仍为 `envVersion: 'release'`。
|
|
97
|
+
联调时仅在测试项目将去程版本覆盖为官方已提供的 `develop` 或 `trial`。
|
|
98
|
+
|
|
99
|
+
```js
|
|
100
|
+
// 登录按钮的点击处理;成功表示已跳转,还没有建立应用会话。
|
|
101
|
+
const started = await cloud.auth.signInWithWorkBuddyMiniProgram({
|
|
102
|
+
redirectPath: 'pages/index/index',
|
|
103
|
+
});
|
|
104
|
+
if (started.error && started.error.code !== 'cancelled') {
|
|
105
|
+
wx.showToast({ title: started.error.message, icon: 'none' });
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
```js
|
|
110
|
+
// app.js,与各页面共用同一个 cloud 实例。
|
|
111
|
+
App({
|
|
112
|
+
onShow(options) {
|
|
113
|
+
// 页面登录守卫应等待这个 Promise,避免换票完成前又显示登录页。
|
|
114
|
+
this.authReady = cloud.auth.handleWorkBuddyMiniProgramCallback(options);
|
|
115
|
+
this.authReady.then(({ error }) => {
|
|
116
|
+
if (error) wx.showToast({ title: error.message, icon: 'none' });
|
|
117
|
+
});
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// 页面 onShow 内:
|
|
122
|
+
await getApp().authReady;
|
|
123
|
+
const { data: session } = await cloud.auth.getSession();
|
|
124
|
+
// 用 session 渲染登录状态;数据库、存储等请求会自动携带会话。
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
`handleWorkBuddyMiniProgramCallback` 接收完整的 `App.onShow` 参数,读取
|
|
128
|
+
`referrerInfo.appId` 和 `referrerInfo.extraData`。普通启动、手动返回未携带结果、
|
|
129
|
+
已处理的重复回调返回 `{ data: null, error: null }`;授权成功返回会话。
|
|
130
|
+
SDK 不接管应用生命周期,不把普通返回当作取消。
|
|
131
|
+
|
|
132
|
+
- 成功回传:`extraData: { code, state, redirect_uri }`,其中 `redirect_uri` 是签发授权码时使用的完整 `wbmp://{appId}/{path}` 回调地址。
|
|
133
|
+
- 失败可由官方小程序在页面内展示,不要求回传;手动返回无结果时不建立新会话,
|
|
134
|
+
应用可以恢复已有会话或由用户再次点击登录,不自动重新拉起授权。
|
|
135
|
+
- SDK 兼容可选错误回传 `{ state, error: 'access_denied', error_description? }`,
|
|
136
|
+
收到 `error` 时不换票;用户取消微信跳转弹窗返回 `error.code: 'cancelled'`。
|
|
137
|
+
- SDK 使用 `wx.getRandomValues(32)` 生成随机 state,并存入按应用隔离的 wx storage,
|
|
138
|
+
本地等待有效期为 10 分钟;客户端重建后仍可接回。
|
|
139
|
+
- SDK 校验来源 AppID、state 和有效期,兑换前消费本地 state,重复回调最多兑换一次。
|
|
140
|
+
兑换失败后需重新发起登录。
|
|
141
|
+
|
|
142
|
+
### 原生登录流程与接口分工
|
|
143
|
+
|
|
144
|
+
```text
|
|
145
|
+
客户小程序 SDK
|
|
146
|
+
│ 生成并保存 state,直接 wx.navigateToMiniProgram
|
|
147
|
+
│ appId = wx907c65e5e107ddcf,envVersion = release
|
|
148
|
+
│ path = subpackages/secondary/oauth-authorize/index
|
|
149
|
+
│ ?client_id={复合ID}&redirect_uri={客户小程序路由}&state={state}&envVersion={客户运行版本}
|
|
150
|
+
▼
|
|
151
|
+
WorkBuddy 官方小程序【冠宇团队】
|
|
152
|
+
│ 检查 WB 登录,调用 /workbuddyopen/v1/authorize/status、code、consent
|
|
153
|
+
▼
|
|
154
|
+
开平 → Genie BaaS 应用信息接口【rackey 侧】
|
|
155
|
+
│ 入参不变,按子应用查可信绑定的微信 AppID,用 AppID + 返回路由生成 wbmp://{appId}/{path}
|
|
156
|
+
│ 返回 mpLink,开平将其作为签发授权码的 redirect_uri
|
|
157
|
+
▼
|
|
158
|
+
开平签发 code → 官方小程序返回客户小程序
|
|
159
|
+
│ 官方小程序解析 wbmp 协议的 AppID 和 path,直接跳回
|
|
160
|
+
│ extraData = { code, state, redirect_uri }
|
|
161
|
+
▼
|
|
162
|
+
客户小程序 SDK
|
|
163
|
+
│ 校验来源和 state,将 redirect_uri 原值放入 BaaS 的 shortlink 字段
|
|
164
|
+
│ POST /.cloud/auth/v1/login-workbuddy-miniprogram { code, state, shortlink }
|
|
165
|
+
▼
|
|
166
|
+
Genie BaaS 后端
|
|
167
|
+
│ POST /openapi/v2/token,使用签码时相同的 redirect_uri 和复合 client_id
|
|
168
|
+
│ 复用用户映射,签发本应用会话
|
|
169
|
+
▼
|
|
170
|
+
SDK 保存会话,后续云请求自动携带身份
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
SDK 跳转的 `client_id`、`redirect_uri`、`state` 分别进行 URL 编码。`redirectPath` 可带业务查询参数,
|
|
174
|
+
传给官方小程序时是客户小程序路由;开平签码和 BaaS 换票使用的是 BaaS 应用信息接口
|
|
175
|
+
返回的 `mpLink`(`wbmp://{appId}/{path}`)。SDK 从官方小程序回传中读取 `redirect_uri`,
|
|
176
|
+
连同业务查询参数原样提交 BaaS 换票,不解析、重新编码或拼接该地址。
|
|
177
|
+
官方授权页的 query 参数名为 `client_id`。
|
|
178
|
+
|
|
179
|
+
### SDK ↔ BaaS 配套契约
|
|
180
|
+
|
|
181
|
+
BaaS 的 `publicConfig` 提供 `workBuddyOAuthClientId`,SDK 初始化时原样接收。
|
|
182
|
+
此配置只用于发起授权;服务端仍根据应用凭据及已登记绑定校验归属。
|
|
183
|
+
|
|
184
|
+
SDK 只调用 `POST /.cloud/auth/v1/login-workbuddy-miniprogram`,body 为
|
|
185
|
+
`{ "code": "...", "state": "...", "shortlink": "..." }`。请求沿用 `publicConfig.endpoint` 和
|
|
186
|
+
`x-wb-webapp-access-key`,不携带应用现有会话,也不携带 `code_verifier`。
|
|
187
|
+
为兼容已部署的 BaaS,body 字段保留 `shortlink`,其值取自 `extraData.redirect_uri`。
|
|
188
|
+
|
|
189
|
+
开平查询 BaaS 应用信息时转交返回路由,由 rackey 侧接口根据应用绑定生成 `mpLink`,
|
|
190
|
+
其中 AppID 来自可信绑定。官方小程序将该地址放入 `redirect_uri`,与 code、state 一并回传;
|
|
191
|
+
BaaS 检查应用登录开关和绑定后,使用回传的原始地址与复合 `client_id` 换票,
|
|
192
|
+
由开平校验其与签码时一致。
|
|
193
|
+
|
|
194
|
+
响应沿用现有格式:`{ access_token, refresh_token, expires_in, sub, name?, avatar_url? }`。
|
|
195
|
+
SDK 复用已有会话存储、续期和登录事件。开平 token、client secret 留在服务端。
|
|
196
|
+
|
|
197
|
+
发布顺序:BaaS 配置下发、应用信息查询和换票能力就绪后,发布 SDK 与配套 Skill,
|
|
198
|
+
重建体验版并完成真机授权往返验证。本地 mock 与候选包构建只验收 SDK 实现。
|