uni-open-bridge
{
"schedule": {
"__UNI__xxxxxx": {
"enable": true,
"mp-weixin": {
"enable": true,
"tasks": ["accessToken"]
},
"h5-weixin": {
"enable": false,
"tasks": ["ticket"]
}
}
},
"ipWhitelist": ["0.0.0.0"]
}
请求类型 POST, 需要配置IP白名单字段 ipWhitelist,参见 config.json
Url
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getAccessToken
参数
{
"dcloudAppid": "__UNI__xxx",
"platform": "mp-weixin"
}
Url
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setAccessToken
{
"dcloudAppid": "__UNI__xxx",
"platform": "mp-weixin",
"value": {
"access_token": ""
},
"expiresIn": 7200
}
Url
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeAccessToken
参数
{
"dcloudAppid": "__UNI__xxx",
"platform": "mp-weixin"
}
Url
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getUserKey
参数
{
"dcloudAppid": "__UNI__xxx",
"platform": "mp-weixin",
"openid": ""
}
Url
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setUserKey
参数
{
"dcloudAppid": "__UNI__xxx",
"platform": "mp-weixin",
"openid": "",
"value": {
"session_key": ""
},
"expiresIn": 7200
}
Url
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeUserKey
参数
{
"dcloudAppid": "__UNI__xxx",
"platform": "mp-weixin",
"openid": ""
}
Url
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getTicket
参数
{
"dcloudAppid": "__UNI__xxx",
"platform": "mp-weixin"
}
Url
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setTicket
参数
{
"dcloudAppid": "__UNI__xxx",
"platform": "mp-weixin",
"value": {
"ticket": ""
},
"expiresIn": 7200
}
Url
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeTicket
参数
{
"dcloudAppid": "__UNI__xxx",
"platform": "mp-weixin"
}
uni-open-bridge-common 是 uni-id 体系中用于 开放平台数据 管理的公共模块。
云函数公共模块是不同云函数共享代码的一种方式。如果你不了解什么是云函数公共模块,请另读文档公共模块
uni-open-bridge-common 提供了 access_token、session_key、encrypt_key、ticket 的读取、写入、删除操作。
uni-open-bridge-common 支持多层 读取 / 写入 机制,redis -> database -> fallback,优先级如下:
如果用户没有开通 redis 或者操作失败,透传到 database,database 失败后,如果用户配置了 fallback,继续调用 fallback 方法,否则抛出 Error
database 对应的表为: opendb-open-data
access_token 是微信小程序全局唯一后台接口调用凭据,调用绝大多数后台接口时都需使用。开发者可以通过 getAccessToken 接口获取并进行妥善保存。详情
读取 access_token
写入 access_token
删除 access_token
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| dcloudAppid | String | 是 | DCloud应用appid。详情 |
| platform | String | 是 | 详情 |
| fallback | Function | 否 | 详情 |
| 参数 | 类型 | 描述 |
|---|---|---|
| access_token | String |
有效时间(秒)
'use strict';
const {
getAccessToken,
setAccessToken,
removeAccessToken
} = require('uni-open-bridge-common')
exports.main = async (event, context) => {
const key = {
dcloudAppid: '',
platform: ''
}
const value = {
access_token: ''
}
const expiresIn = 7200
// 写入 (redis / 数据库)
await setAccessToken(key, value, expiresIn)
// 读取 (redis / 数据库)
let result1 = await getAccessToken(key)
// 删除
await removeAccessToken(key)
// 删除后读取, 返回 null
let result2 = await getAccessToken(key)
console.log(result2) // null
return null
};
平台对应的值
| 平台 | 值 | 描述 |
|---|---|---|
| 微信小程序 | session_key | 微信小程序会话密钥。详情 |
读取 user_key
写入 user_key
删除 user_key
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| dcloudAppid | String | 是 | DCloud应用appid。详情 |
| platform | String | 是 | 详情 |
| openid | String | 是 | |
| fallback | Function | 否 | 详情 |
| 参数 | 类型 | 描述 |
|---|---|---|
| session_key | String | 微信小程序会话密钥 |
有效时间(秒)
'use strict';
const {
getUserKey,
setUserKey,
removeUserKey,
} = require('uni-open-bridge-common')
exports.main = async (event, context) => {
const key = {
dcloudAppid: '',
platform: '',
openid: ''
}
const value = {
'session_key': ''
}
const expiresIn = 7200
// 写入 (redis / 数据库)
await setUserKey(key, value, expiresIn)
// 读取 (redis / 数据库)
let result1 = await getUserKey(key)
// 删除
await removeUserKey(key)
// 删除后读取, 返回 null
let result2 = await getUserKey(key)
console.log(result2) // null
return null
};
为了避免小程序与开发者后台通信时数据被截取和篡改,微信侧维护了一个用户维度的可靠key,用于小程序和后台通信时进行加密和签名。详情
开发者可以分别通过小程序前端和微信后台提供的接口,获取用户的加密 key。
读取 encrypt_key
写入 encrypt_key
删除 encrypt_key
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| dcloudAppid | String | 是 | DCloud应用appid。详情 |
| platform | String | 是 | 详情 |
| openid | String | 是 | |
| version | Number | 是 | 版本 |
| fallback | Function | 否 | 详情 |
| 参数 | 类型 | 描述 |
|---|---|---|
| encrypt_key | String | 加密 key |
| iv | String | 加密 iv |
有效时间(秒)
'use strict';
const {
getEncryptKey,
setEncryptKey,
removeEncryptKey
} = require('uni-open-bridge-common')
exports.main = async (event, context) => {
const key = {
dcloudAppid: '',
platform: '',
openid: '',
version: 1
}
const value = {
encrypt_key: '',
iv: ''
}
const expiresIn = 7200
// 写入 (redis / 数据库)
await setEncryptKey(key, value, expiresIn)
// 读取 (redis / 数据库)
let result1 = await getEncryptKey(key)
// 删除
await removeEncryptKey(key)
// 删除后读取, 返回 null
let result2 = await getEncryptKey(key)
console.log(result2) // null
return null
};
ticket 是公众号用于调用微信 JS 接口的临时票据。详情
读取 ticket
写入 ticket
删除 ticket
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
| dcloudAppid | String | 是 | DCloud应用appid。详情 |
| platform | String | 是 | 详情 |
| fallback | Function | 否 | 详情 |
| 参数 | 类型 | 描述 |
|---|---|---|
| ticket | String |
有效时间(秒)
'use strict';
const {
getTicket,
setTicket,
removeTicket
} = require('uni-open-bridge-common')
exports.main = async (event, context) => {
const key = {
dcloudAppid: '',
platform: ''
}
const value = {
ticket: ''
}
const expiresIn = 7200
// 写入 (redis / 数据库)
await setTicket(key, value, expiresIn)
// 读取 (redis / 数据库)
let result1 = await getTicket(key)
// 删除
await removeTicket(key)
// 删除后读取, 返回 null
let result2 = await getTicket(key)
console.log(result2) // null
return null
};
平台对应的值
| 值 | 描述 |
|---|---|
| mp-weixin | 微信小程序 |
| app-weixin | 微信 App |
| h5-weixin | 微信公众号 |
| web-weixin | 微信pc网页 |
| mp-qq | QQ 小程序 |
| app-qq | QQ App |
可选 async function fallback(),当 reids -> database 都找不到对应 key 时,调用此方法,需要返回数据格式如下
{
value: null,
duration: 1
}
注意事项
async,需要使用 awaitkey 属性是否有效,无效则 throw new Error(),对 value 仅校验是否为 undefined