资源复用
收藏
我的收藏介绍
很多场景下,多个小程序或小玩法会共用同一套后端服务;针对以上需求抖音云目前提供了资源复用功能,支持将一个小程序/小玩法的云托管环境共享给同主体的其他「小程序/小玩法」。
设置资源复用时,复用方
不需要开通
抖音云。即从理论上来说,同一个主体的多个小程序/小玩法,只需选择任意一个应用初始化抖音云即可,避免初始化过多小程序浪费资源。使用限制
- 1.当前仅支持小程序与小玩法间资源复用。
- 2.添加资源复用关系时,只 能添加当前小程序同主体且当前用户在抖音开放平台有管理员权限的小程序/小玩法。
操作指引
- •【复用管理】tab可以查看当前小程序的资源共享给哪些小程序
- •【被授权复用资源】tab可以查看当前小程序复用了哪些小程序小程序的资源。
资源共享功能是环境维度的,在 dev 环境添加完复用关系之后在 prod 环境并不会生效,如果用户需要共享 prod 资源需要切换环境之后重新添加。
点击右上角「关联」按钮,将会弹出对话框,在对话框里面应用下拉框中选择共享的小程序/小玩法。选择完应用之后添加需要共享的资源;抖音云可共享的资源包括服务与对象存储,其中服务可以选择多个对象存储只能选择是否复用。
选择完之后点击确认会弹出管理员短信验证,需要当前小程序下的管理员操作。
确认完成后,将在列表中显示复用信息,你可以进行「配置」用于变更共享的资源,也可以操作「解绑」解除复用关系。每项操作均需要管理员短信或者邮箱验证码确认。
如需添加关联小程序的相关开发者,可前往当前【权限管理】将相关开发者加为开发者/管理员即可。
云端调试
共享资源后,在共享环境所在的服务中(即资源所有者 APP 下的服务),小程序模拟调试可以在【调用来源】下拉框切换小程序,相应的就可以用指定小程序调用测试。
客户端 SDK 调用
资源复用下小程序中使用
callContainer
或者uploadfile
等 SDK 时,只需要在 tt.createcloud
中填写环境来源的 envid 与 serviceid,其他地方不需要修改。例如,小程序 A(appid:dy_app_a)的环境
env_001
下的服务service_1
和对象存储授权给 小程序 B(appid:dy_app_b),则应是如下:const cloud = tt.createCloud({ envID: "env_001", // 资源拥有者的envid serviceID: "service_1", // 资源拥有者的serviceid }); cloud.callContainer({ path: "/example", init: { method: "POST", header: { "content-type": "application/json", }, body: { example: "example", }, timeout: 60000, //ms }, success: ({ statusCode, header, data }) => { JSON.parse(data); }, fail: console.warn, complete: console.warn, }); tt.chooseImage({ count: 1, sizeType: ["compressed"], sourceType: ["album"], success: (res) => { console.log("tt.chooseImage success", res); cloud.uploadFile({ cloudPath: "myDir/path1.png", filePath: res.tempFilePaths[0], timeout: 60000, success: (uploadRes) => { console.log("Cloud.uploadFile success", uploadRes); }, fail: (uploadRes) => { console.log("Cloud.uploadFile fail", uploadRes); }, complete: (uploadRes) => { console.log("Cloud.uploadFile complete", uploadRes); }, }); }, fail: (res) => { console.log("tt.chooseImage fail", res); }, complete: (res) => { console.log("tt.chooseImage complete", res); }, });
资源复用下的云调用
使用资源复用进行调用抖音开放平台 OpenAPI 时,需要额外携带调用方的 AppID 与 ServiceID。用户需要在调用时手动将 appID 与 serviceID 注入到请求抖音开放平台 OpenAPI 的 Header 中。
url := "https://developer.toutiao.com/api/apps/qrcode" client := &http.Client{} req, err := http.NewRequest("POST", url, nil) req.Header.Add("Content-Type", "application/json") req.Header.Add("X-DYC-FROM-APP", "dy_app_b"). // 请求中通过设置“X-DYC-FROM-APP” Header指定以哪一个小程序的身份调用抖音开放平台接口 req.Header.Add("X-DYC-SERVICE", "service_1") // 请求中通过设置“X-DYC-SERVICE” Header指定当前service的ID
如果请求来自小程序,可以将用户请求中的 header 中直接获取 appID 与 serviceID,示例代码如下:
appID := r.Header.Get("X-Tt-Appid") serviceID := r.Header.Get("X-Tt-Serviceid")