Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
0a427de7
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3172
Star
105
Fork
804
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
93
列表
看板
标记
里程碑
合并请求
67
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
93
Issue
93
列表
看板
标记
里程碑
合并请求
67
合并请求
67
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
0a427de7
编写于
8月 12, 2022
作者:
d-u-a
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
bridge: 补充 getUserAccessToken, 将 user_key 改为 session_key,还原 set 和 remove 方法
上级
d1a6a0b4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
385 addition
and
23 deletion
+385
-23
docs/uniCloud/secret-net.md
docs/uniCloud/secret-net.md
+1
-2
docs/uniCloud/uni-open-bridge.md
docs/uniCloud/uni-open-bridge.md
+384
-21
未找到文件。
docs/uniCloud/secret-net.md
浏览文件 @
0a427de7
...
@@ -98,8 +98,7 @@ uniCloud.callFunction({
...
@@ -98,8 +98,7 @@ uniCloud.callFunction({
```
js
```
js
uniCloud
.
importObject
(
'
object-name
'
,
{
uniCloud
.
importObject
(
'
object-name
'
,
{
customUI
:
false
,
customUI
:
false
,
secret
:
'
both
'
,
secretMethods
:
{
'
login
'
:
'
both
'
}
secretMethods
:
[
'
login
'
]
})
})
```
```
...
...
docs/uniCloud/uni-open-bridge.md
浏览文件 @
0a427de7
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
`uni-open-bridge`
系统中,有一个同名云对象
`uni-open-bridge`
,它默认就是定时运行的,在package.json中配置了每小时定时运行一次(部署线上系统生效)。
`uni-open-bridge`
系统中,有一个同名云对象
`uni-open-bridge`
,它默认就是定时运行的,在package.json中配置了每小时定时运行一次(部署线上系统生效)。
该云对象根据在
`uni-config-center`
中
`mp-weixin`
或
`web`
节点位置配置的
`appid`
和
`secret`
,从而有权定时向微信服务器发请求,将获取到的
`access_token`
或
`ticket`
保存到数据库
`opendb-open-data`
表中。
该云对象根据在
`uni-config-center`
中
[
配置
](
#uni-id-config
)
固定凭据
,从而有权定时向微信服务器发请求,将获取到的
`access_token`
或
`ticket`
保存到数据库
`opendb-open-data`
表中。
当所在服务空间开通redis时,还会缓存在redis的key。这会让系统性能更好。
当所在服务空间开通redis时,还会缓存在redis的key。这会让系统性能更好。
...
@@ -42,18 +42,20 @@
...
@@ -42,18 +42,20 @@
流程图如下:
流程图如下:
<img
src=
"/svg/uni-open-bridge.svg"
></img>
![](
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-a90b5f95-90ba-4d30-a6a7-cd4d057327db/b80cec3b-e106-489d-9075-90b5ecb02963.png
)
## 使用
## 使用
1.
**
下载插件
[
uni-open-bridge
](
https://ext.dcloud.net.cn/plugin?id=9002
)
到项目中。
1.
**
下载插件
[
uni-open-bridge
](
https://ext.dcloud.net.cn/plugin?id=9002
)
到项目中。
2.
在
`uni-config-center`
的
`uni-id`
下配置固定凭据
`appid`
和
`secret`
2.
在
`uni-config-center`
的
`uni-id`
下配置固定凭据
,详情见下面的示例代码
首先向微信的
[
公众平台
](
https://mp.weixin.qq.com/
)
申请
`appid`
和
`secret`
固定凭据
首先向微信的
[
公众平台
](
https://mp.weixin.qq.com/
)
申请
`appid`
和
`secret`
固定凭据
然后在项目的 uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 文件中配置
然后在项目的 uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 文件中配置
**示例代码**
**示例代码**
uni-id-config@uni-id-config
```
json
```
json
//
uni-config-center/uni-id/config.json
//
uni-config-center/uni-id/config.json
{
{
...
@@ -121,7 +123,7 @@
...
@@ -121,7 +123,7 @@
> `云函数公共模块`是不同云函数共享代码的一种方式。如果你不了解什么是`云函数公共模块`,请另读文档[公共模块](https://uniapp.dcloud.io/uniCloud/cf-common)
> `云函数公共模块`是不同云函数共享代码的一种方式。如果你不了解什么是`云函数公共模块`,请另读文档[公共模块](https://uniapp.dcloud.io/uniCloud/cf-common)
`uni-open-bridge-common`
提供了
`access_token`
、
`session_key`
、
`encrypt_key`
、
`ticket`
的读取、写入、删除操作。
**xxx**
不应该写入删除
`uni-open-bridge-common`
提供了
`access_token`
、
`session_key`
、
`encrypt_key`
、
`ticket`
的读取、写入、删除操作。
`uni-open-bridge-common`
支持多层 读取 / 写入 机制,
`redis -> database -> fallback`
,优先级如下:
`uni-open-bridge-common`
支持多层 读取 / 写入 机制,
`redis -> database -> fallback`
,优先级如下:
...
@@ -131,6 +133,15 @@
...
@@ -131,6 +133,15 @@
读取 access_token
读取 access_token
#### setAccessToken(key: Object, value: Object, expiresIn: Number)
写入 access_token
#### removeAccessToken(key: Object)
删除 access_token
**key 属性**
**key 属性**
|参数 |类型 |必填 |描述 |
|参数 |类型 |必填 |描述 |
...
@@ -156,13 +167,14 @@
...
@@ -156,13 +167,14 @@
const
{
const
{
getAccessToken
,
getAccessToken
,
setAccessToken
setAccessToken
,
removeAccessToken
}
=
require
(
'
uni-open-bridge-common
'
)
}
=
require
(
'
uni-open-bridge-common
'
)
exports
.
main
=
async
(
event
,
context
)
=>
{
exports
.
main
=
async
(
event
,
context
)
=>
{
const
key
=
{
const
key
=
{
dcloudAppid
:
''
,
dcloudAppid
:
''
,
platform
:
''
platform
:
'
mp-weixin
'
}
}
const
value
=
{
const
value
=
{
access_token
:
''
access_token
:
''
...
@@ -175,14 +187,95 @@ exports.main = async (event, context) => {
...
@@ -175,14 +187,95 @@ exports.main = async (event, context) => {
// 读取 (redis / 数据库)
// 读取 (redis / 数据库)
let
result1
=
await
getAccessToken
(
key
)
let
result1
=
await
getAccessToken
(
key
)
// 删除
await
removeAccessToken
(
key
)
// 删除后读取, 返回 null
let
result2
=
await
getAccessToken
(
key
)
console
.
log
(
result2
)
// null
return
null
return
null
};
};
```
```
#### getUserAccessToken(key: Object, fallback: Function)
读取 user_access_token
#### getUserKey(key: Object, fallback: Function)
#### setUserAccessToken(key: Object, value: Object, expiresIn: Number)
写入 user_access_token
#### removeUserAccessToken(key: Object)
删除 user_access_token
对应微信公众平台网页用户授权
`access_token`
,详情见下文说明
**key 属性**
|参数 |类型 |必填 |描述 |
|:-: |:-: |:-: |:-: |
|dcloudAppid|String |是 |DCloud应用appid。
[
详情
](
https://ask.dcloud.net.cn/article/35907
)
|
|platform |String |是 |
[
详情
](
#platform
)
|
|openid |String |是 | |
**value 属性**
|参数 |类型 |描述 |
|:-: |:-: |:-: |
|access_token |String |微信公众平台用户会话密钥 |
**expiresIn**
有效时间(秒)
**示例代码**
```
js
'
use strict
'
;
const
{
getUserAccessToken
,
setUserAccessToken
}
=
require
(
'
uni-open-bridge-common
'
)
exports
.
main
=
async
(
event
,
context
)
=>
{
const
key
=
{
dcloudAppid
:
''
,
platform
:
'
h5-weixin
'
,
openid
:
''
}
const
value
=
{
'
access_token
'
:
''
}
const
expiresIn
=
7200
// 写入 (redis / 数据库)
await
setUserAccessToken
(
key
,
value
,
expiresIn
)
// 读取 (redis / 数据库)
let
result1
=
await
getUserAccessToken
(
key
)
return
null
};
```
#### getSessionKey(key: Object, fallback: Function)
读取 session_key
#### setSessionKey(key: Object, value: Object, expiresIn: Number)
写入 session_key
#### removeSessionKey(key: Object)
删除 session_key
读取 user_key
**key 属性**
**key 属性**
...
@@ -209,14 +302,15 @@ exports.main = async (event, context) => {
...
@@ -209,14 +302,15 @@ exports.main = async (event, context) => {
'
use strict
'
;
'
use strict
'
;
const
{
const
{
getUserKey
,
getSessionKey
,
setUserKey
setSessionKey
,
removeSessionKey
}
=
require
(
'
uni-open-bridge-common
'
)
}
=
require
(
'
uni-open-bridge-common
'
)
exports
.
main
=
async
(
event
,
context
)
=>
{
exports
.
main
=
async
(
event
,
context
)
=>
{
const
key
=
{
const
key
=
{
dcloudAppid
:
''
,
dcloudAppid
:
''
,
platform
:
''
,
platform
:
'
mp-weixin
'
,
openid
:
''
openid
:
''
}
}
const
value
=
{
const
value
=
{
...
@@ -225,10 +319,18 @@ exports.main = async (event, context) => {
...
@@ -225,10 +319,18 @@ exports.main = async (event, context) => {
const
expiresIn
=
7200
const
expiresIn
=
7200
// 写入 (redis / 数据库)
// 写入 (redis / 数据库)
await
set
User
Key
(
key
,
value
,
expiresIn
)
await
set
Session
Key
(
key
,
value
,
expiresIn
)
// 读取 (redis / 数据库)
// 读取 (redis / 数据库)
let
result1
=
await
getUserKey
(
key
)
let
result1
=
await
getSessionKey
(
key
)
// 删除
await
removeSessionKey
(
key
)
// 删除后读取, 返回 null
let
result2
=
await
getSessionKey
(
key
)
console
.
log
(
result2
)
// null
return
null
return
null
};
};
...
@@ -239,6 +341,15 @@ exports.main = async (event, context) => {
...
@@ -239,6 +341,15 @@ exports.main = async (event, context) => {
读取 encrypt_key
读取 encrypt_key
#### setEncryptKey(key: Object, value: Object, expiresIn: Number)
写入 encrypt_key
#### removeEncryptKey(key: Object)
删除 encrypt_key
**key 属性**
**key 属性**
|参数 |类型 |必填 |描述 |
|参数 |类型 |必填 |描述 |
...
@@ -268,13 +379,14 @@ exports.main = async (event, context) => {
...
@@ -268,13 +379,14 @@ exports.main = async (event, context) => {
const
{
const
{
getEncryptKey
,
getEncryptKey
,
setEncryptKey
setEncryptKey
,
removeEncryptKey
}
=
require
(
'
uni-open-bridge-common
'
)
}
=
require
(
'
uni-open-bridge-common
'
)
exports
.
main
=
async
(
event
,
context
)
=>
{
exports
.
main
=
async
(
event
,
context
)
=>
{
const
key
=
{
const
key
=
{
dcloudAppid
:
''
,
dcloudAppid
:
''
,
platform
:
''
,
platform
:
'
mp-weixin
'
,
openid
:
''
,
openid
:
''
,
version
:
1
version
:
1
}
}
...
@@ -290,6 +402,13 @@ exports.main = async (event, context) => {
...
@@ -290,6 +402,13 @@ exports.main = async (event, context) => {
// 读取 (redis / 数据库)
// 读取 (redis / 数据库)
let
result1
=
await
getEncryptKey
(
key
)
let
result1
=
await
getEncryptKey
(
key
)
// 删除
await
removeEncryptKey
(
key
)
// 删除后读取, 返回 null
let
result2
=
await
getEncryptKey
(
key
)
console
.
log
(
result2
)
// null
return
null
return
null
};
};
```
```
...
@@ -299,6 +418,15 @@ exports.main = async (event, context) => {
...
@@ -299,6 +418,15 @@ exports.main = async (event, context) => {
读取 ticket
读取 ticket
### setTicket(key: Object, value: Object, expiresIn: Number)
写入 ticket
### removeTicket(key: Object)
删除 ticket
**key 属性**
**key 属性**
|参数 |类型 |必填 |描述 |
|参数 |类型 |必填 |描述 |
...
@@ -324,13 +452,14 @@ exports.main = async (event, context) => {
...
@@ -324,13 +452,14 @@ exports.main = async (event, context) => {
const
{
const
{
getTicket
,
getTicket
,
setTicket
setTicket
,
removeTicket
}
=
require
(
'
uni-open-bridge-common
'
)
}
=
require
(
'
uni-open-bridge-common
'
)
exports
.
main
=
async
(
event
,
context
)
=>
{
exports
.
main
=
async
(
event
,
context
)
=>
{
const
key
=
{
const
key
=
{
dcloudAppid
:
''
,
dcloudAppid
:
''
,
platform
:
''
platform
:
'
h5-weixin
'
}
}
const
value
=
{
const
value
=
{
ticket
:
''
ticket
:
''
...
@@ -343,6 +472,14 @@ exports.main = async (event, context) => {
...
@@ -343,6 +472,14 @@ exports.main = async (event, context) => {
// 读取 (redis / 数据库)
// 读取 (redis / 数据库)
let
result1
=
await
getTicket
(
key
)
let
result1
=
await
getTicket
(
key
)
// 删除
await
removeTicket
(
key
)
// 删除后读取, 返回 null
let
result2
=
await
getTicket
(
key
)
console
.
log
(
result2
)
// null
return
null
return
null
};
};
```
```
...
@@ -361,6 +498,7 @@ exports.main = async (event, context) => {
...
@@ -361,6 +498,7 @@ exports.main = async (event, context) => {
|mp-qq |QQ 小程序 |
|mp-qq |QQ 小程序 |
|app-qq |QQ App |
|app-qq |QQ App |
提示:目前仅支持
`mp-weixin`
、
`h5-weixin`
后续补充其他平台
#### fallback
#### fallback
...
@@ -407,14 +545,148 @@ https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getAcces
...
@@ -407,14 +545,148 @@ https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getAcces
}
}
```
```
#### setAccessToken
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setAccessToken
```
```
json
{
"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
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"mp-weixin"
}
```
其中参数platform值域
[
详见
](
#platform
)
其中参数platform值域
[
详见
](
#platform
)
#### getUserKey
#### getUserAccessToken
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getUserAccessToken
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"h5-weixin"
,
"openid"
:
""
}
```
#### setUserAccessToken
Url
Url
```
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getUserKey
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setUserAccessToken
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"h5-weixin"
,
"openid"
:
""
,
"value"
:
{
"access_token"
:
""
},
"expiresIn"
:
7200
}
```
#### removeUserAccessToken
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeUserAccessToken
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"h5-weixin"
,
"openid"
:
""
}
```
#### getSessionKey
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getSessionKey
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"mp-weixin"
,
"openid"
:
""
}
```
#### setSessionKey
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setSessionKey
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"mp-weixin"
,
"openid"
:
""
,
"value"
:
{
"session_key"
:
""
},
"expiresIn"
:
7200
}
```
#### removeSessionKey
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeSessionKey
```
```
参数
参数
...
@@ -446,6 +718,48 @@ https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getEncry
...
@@ -446,6 +718,48 @@ https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getEncry
}
}
```
```
#### setEncryptKey
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setEncryptKey
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"mp-weixin"
,
"openid"
:
""
,
"version"
:
1
,
"value"
:
{
"encrypt_key"
:
""
,
"iv"
:
""
}
}
```
#### removeEncryptKey
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeEncryptKey
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"mp-weixin"
,
"openid"
:
""
,
"version"
:
1
}
```
#### getTicket
#### getTicket
...
@@ -460,7 +774,44 @@ https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getTicke
...
@@ -460,7 +774,44 @@ https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getTicke
```
json
```
json
{
{
"dcloudAppid"
:
"__UNI__xxx"
,
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"mp-weixin"
"platform"
:
"h5-weixin"
}
```
#### setTicket
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/setTicket
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"h5-weixin"
,
"value"
:
{
"ticket"
:
""
}
}
```
#### removeTicket
Url
```
https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/removeTicket
```
参数
```
json
{
"dcloudAppid"
:
"__UNI__xxx"
,
"platform"
:
"h5-weixin"
}
}
```
```
...
@@ -487,7 +838,19 @@ https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getTicke
...
@@ -487,7 +838,19 @@ https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getTicke
如公众号管理员第一次拒绝该 IP 调用,用户在1个小时内将无法使用该 IP 再次发起调用,如公众号管理员多次拒绝该 IP 调用,该 IP 将可能长期无法发起调用。平台建议开发者在发起调用前主动与管理员沟通确认调用需求,或请求管理员开启 IP 白名单功能并将该 IP 加入 IP 白名单列表。
如公众号管理员第一次拒绝该 IP 调用,用户在1个小时内将无法使用该 IP 再次发起调用,如公众号管理员多次拒绝该 IP 调用,该 IP 将可能长期无法发起调用。平台建议开发者在发起调用前主动与管理员沟通确认调用需求,或请求管理员开启 IP 白名单功能并将该 IP 加入 IP 白名单列表。
### user_key
### user_access_token@user_access_token
对应微信公众平台网页用户授权
`access_token`
微信公众平台网页授权有两个相同名字
`access_token`
,分别用于
1、公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用
`access_token`
。
2、网页授权接口调用凭证,用户授权的作用域
`access_token`
。
由于微信H5平台无法区分两个
`access_token`
,所以以
`user_access_token`
对应用户授权
`access_token`
### session_key
平台对应的值
平台对应的值
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录