NGTools/uni_modules/uni-open-bridge
ldeyun 9dbfdc6c71 V1.0.0
微信小程序运行成功;
H5运行成功
2024-09-30 01:30:39 +08:00
..
uniCloud/cloudfunctions/uni-open-bridge V1.0.0 2024-09-30 01:30:39 +08:00
changelog.md V1.0.0 2024-09-30 01:30:39 +08:00
package.json V1.0.0 2024-09-30 01:30:39 +08:00
readme.md V1.0.0 2024-09-30 01:30:39 +08:00

uni-open-bridge

uni-open-bridge

config.json

{
  "schedule": {
    "__UNI__xxxxxx": {
      "enable": true,
      "mp-weixin": {
        "enable": true,
        "tasks": ["accessToken"]
      },
      "h5-weixin": {
        "enable": false,
        "tasks": ["ticket"]
      }
    }
  },
  "ipWhitelist": ["0.0.0.0"]
}

http 调用

请求类型 POST, 需要配置IP白名单字段 ipWhitelist,参见 config.json

getAccessToken

Url

https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getAccessToken

参数

{
  "dcloudAppid": "__UNI__xxx",
  "platform": "mp-weixin"
}

setAccessToken

Url

https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setAccessToken
{
  "dcloudAppid": "__UNI__xxx",
  "platform": "mp-weixin",
  "value": {
    "access_token": ""
  },
  "expiresIn": 7200
}

removeAccessToken

Url

https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeAccessToken

参数

{
  "dcloudAppid": "__UNI__xxx",
  "platform": "mp-weixin"
}

getUserKey

Url

https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getUserKey

参数

{
  "dcloudAppid": "__UNI__xxx",
  "platform": "mp-weixin",
  "openid": ""
}

setUserKey

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
}

removeUserKey

Url

https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeUserKey

参数

{
  "dcloudAppid": "__UNI__xxx",
  "platform": "mp-weixin",
  "openid": ""
}

getTicket

Url

https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getTicket

参数

{
  "dcloudAppid": "__UNI__xxx",
  "platform": "mp-weixin"
}

setTicket

Url

https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setTicket

参数

{
  "dcloudAppid": "__UNI__xxx",
  "platform": "mp-weixin",
  "value": {
    "ticket": ""
  },
  "expiresIn": 7200
}

removeTicket

Url

https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeTicket

参数

{
  "dcloudAppid": "__UNI__xxx",
  "platform": "mp-weixin"
}

uni-open-bridge-common

uni-open-bridge-commonuni-id 体系中用于 开放平台数据 管理的公共模块。

云函数公共模块是不同云函数共享代码的一种方式。如果你不了解什么是云函数公共模块,请另读文档公共模块

uni-open-bridge-common 提供了 access_tokensession_keyencrypt_keyticket 的读取、写入、删除操作。

uni-open-bridge-common 支持多层 读取 / 写入 机制,redis -> database -> fallback,优先级如下:

如果用户没有开通 redis 或者操作失败,透传到 databasedatabase 失败后,如果用户配置了 fallback,继续调用 fallback 方法,否则抛出 Error

database 对应的表为: opendb-open-data

access_token

access_token 是微信小程序全局唯一后台接口调用凭据,调用绝大多数后台接口时都需使用。开发者可以通过 getAccessToken 接口获取并进行妥善保存。详情

getAccessToken(key: Object)

读取 access_token

setAccessToken(key: Object, value: Object, expiresIn: Number)

写入 access_token

removeAccessToken(key: Object)

删除 access_token

key 属性

参数 类型 必填 描述
dcloudAppid String DCloud应用appid。详情
platform String 详情
fallback Function 详情

value 属性

参数 类型 描述
access_token String

expiresIn

有效时间(秒)

示例代码

'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
};

user_key

平台对应的值

平台 描述
微信小程序 session_key 微信小程序会话密钥。详情

getUserKey(key: Object)

读取 user_key

setUserKey(key: Object, value: Object, expiresIn: Number)

写入 user_key

removeUserKey(key: Object)

删除 user_key

key 属性

参数 类型 必填 描述
dcloudAppid String DCloud应用appid。详情
platform String 详情
openid String
fallback Function 详情

value 属性

参数 类型 描述
session_key String 微信小程序会话密钥

expiresIn

有效时间(秒)

示例代码

'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
};

encrypt_key

为了避免小程序与开发者后台通信时数据被截取和篡改微信侧维护了一个用户维度的可靠key用于小程序和后台通信时进行加密和签名。详情

开发者可以分别通过小程序前端和微信后台提供的接口,获取用户的加密 key。

getEncryptKey(key: Object)

读取 encrypt_key

setEncryptKey(key: Object, value: Object, expiresIn: Number)

写入 encrypt_key

removeEncryptKey(key: Object)

删除 encrypt_key

key 属性

参数 类型 必填 描述
dcloudAppid String DCloud应用appid。详情
platform String 详情
openid String
version Number 版本
fallback Function 详情

value 属性

参数 类型 描述
encrypt_key String 加密 key
iv String 加密 iv

expiresIn

有效时间(秒)

示例代码

'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

ticket 是公众号用于调用微信 JS 接口的临时票据。详情

getTicket(key: Object)

读取 ticket

setTicket(key: Object, value: Object, expiresIn: Number)

写入 ticket

removeTicket(key: Object)

删除 ticket

key 属性

参数 类型 必填 描述
dcloudAppid String DCloud应用appid。详情
platform String 详情
fallback Function 详情

value 属性

参数 类型 描述
ticket String

expiresIn

有效时间(秒)

示例代码

'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
};

Platform@platform

平台对应的值

描述
mp-weixin 微信小程序
app-weixin 微信 App
h5-weixin 微信公众号
web-weixin 微信pc网页
mp-qq QQ 小程序
app-qq QQ App

fallback@fallback

可选 async function fallback(),当 reids -> database 都找不到对应 key 时,调用此方法,需要返回数据格式如下

{
  value: null,
  duration: 1
}

注意事项

  • 所有方法类型为 async,需要使用 await
  • 所有方法校验 key 属性是否有效,无效则 throw new Error(),对 value 仅校验是否为 undefined