Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
程序yang
unidocs-zh
提交
0a427de7
U
unidocs-zh
项目概览
程序yang
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
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({
```
js
uniCloud
.
importObject
(
'
object-name
'
,
{
customUI
:
false
,
secret
:
'
both
'
,
secretMethods
:
[
'
login
'
]
secretMethods
:
{
'
login
'
:
'
both
'
}
})
```
...
...
docs/uniCloud/uni-open-bridge.md
浏览文件 @
0a427de7
...
...
@@ -31,7 +31,7 @@
`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。这会让系统性能更好。
...
...
@@ -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
)
到项目中。
2.
在
`uni-config-center`
的
`uni-id`
下配置固定凭据
`appid`
和
`secret`
2.
在
`uni-config-center`
的
`uni-id`
下配置固定凭据
,详情见下面的示例代码
首先向微信的
[
公众平台
](
https://mp.weixin.qq.com/
)
申请
`appid`
和
`secret`
固定凭据
然后在项目的 uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 文件中配置
**示例代码**
uni-id-config@uni-id-config
```
json
//
uni-config-center/uni-id/config.json
{
...
...
@@ -121,7 +123,7 @@
> `云函数公共模块`是不同云函数共享代码的一种方式。如果你不了解什么是`云函数公共模块`,请另读文档[公共模块](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`
,优先级如下:
...
...
@@ -131,6 +133,15 @@
读取 access_token
#### setAccessToken(key: Object, value: Object, expiresIn: Number)
写入 access_token
#### removeAccessToken(key: Object)
删除 access_token
**key 属性**
|参数 |类型 |必填 |描述 |
...
...
@@ -156,13 +167,14 @@
const
{
getAccessToken
,
setAccessToken
setAccessToken
,
removeAccessToken
}
=
require
(
'
uni-open-bridge-common
'
)
exports
.
main
=
async
(
event
,
context
)
=>
{
const
key
=
{
dcloudAppid
:
''
,
platform
:
''
platform
:
'
mp-weixin
'
}
const
value
=
{
access_token
:
''
...
...
@@ -175,14 +187,95 @@ exports.main = async (event, context) => {
// 读取 (redis / 数据库)
let
result1
=
await
getAccessToken
(
key
)
// 删除
await
removeAccessToken
(
key
)
// 删除后读取, 返回 null
let
result2
=
await
getAccessToken
(
key
)
console
.
log
(
result2
)
// 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 属性**
...
...
@@ -209,14 +302,15 @@ exports.main = async (event, context) => {
'
use strict
'
;
const
{
getUserKey
,
setUserKey
getSessionKey
,
setSessionKey
,
removeSessionKey
}
=
require
(
'
uni-open-bridge-common
'
)
exports
.
main
=
async
(
event
,
context
)
=>
{
const
key
=
{
dcloudAppid
:
''
,
platform
:
''
,
platform
:
'
mp-weixin
'
,
openid
:
''
}
const
value
=
{
...
...
@@ -225,10 +319,18 @@ exports.main = async (event, context) => {
const
expiresIn
=
7200
// 写入 (redis / 数据库)
await
set
User
Key
(
key
,
value
,
expiresIn
)
await
set
Session
Key
(
key
,
value
,
expiresIn
)
// 读取 (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
};
...
...
@@ -239,6 +341,15 @@ exports.main = async (event, context) => {
读取 encrypt_key
#### setEncryptKey(key: Object, value: Object, expiresIn: Number)
写入 encrypt_key
#### removeEncryptKey(key: Object)
删除 encrypt_key
**key 属性**
|参数 |类型 |必填 |描述 |
...
...
@@ -268,13 +379,14 @@ exports.main = async (event, context) => {
const
{
getEncryptKey
,
setEncryptKey
setEncryptKey
,
removeEncryptKey
}
=
require
(
'
uni-open-bridge-common
'
)
exports
.
main
=
async
(
event
,
context
)
=>
{
const
key
=
{
dcloudAppid
:
''
,
platform
:
''
,
platform
:
'
mp-weixin
'
,
openid
:
''
,
version
:
1
}
...
...
@@ -290,6 +402,13 @@ exports.main = async (event, context) => {
// 读取 (redis / 数据库)
let
result1
=
await
getEncryptKey
(
key
)
// 删除
await
removeEncryptKey
(
key
)
// 删除后读取, 返回 null
let
result2
=
await
getEncryptKey
(
key
)
console
.
log
(
result2
)
// null
return
null
};
```
...
...
@@ -299,6 +418,15 @@ exports.main = async (event, context) => {
读取 ticket
### setTicket(key: Object, value: Object, expiresIn: Number)
写入 ticket
### removeTicket(key: Object)
删除 ticket
**key 属性**
|参数 |类型 |必填 |描述 |
...
...
@@ -324,13 +452,14 @@ exports.main = async (event, context) => {
const
{
getTicket
,
setTicket
setTicket
,
removeTicket
}
=
require
(
'
uni-open-bridge-common
'
)
exports
.
main
=
async
(
event
,
context
)
=>
{
const
key
=
{
dcloudAppid
:
''
,
platform
:
''
platform
:
'
h5-weixin
'
}
const
value
=
{
ticket
:
''
...
...
@@ -343,6 +472,14 @@ exports.main = async (event, context) => {
// 读取 (redis / 数据库)
let
result1
=
await
getTicket
(
key
)
// 删除
await
removeTicket
(
key
)
// 删除后读取, 返回 null
let
result2
=
await
getTicket
(
key
)
console
.
log
(
result2
)
// null
return
null
};
```
...
...
@@ -361,6 +498,7 @@ exports.main = async (event, context) => {
|mp-qq |QQ 小程序 |
|app-qq |QQ App |
提示:目前仅支持
`mp-weixin`
、
`h5-weixin`
后续补充其他平台
#### fallback
...
...
@@ -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
)
#### 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
```
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
}
```
#### 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
...
...
@@ -460,7 +774,44 @@ https://xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx.bspapp.com/uni-open-bridge/getTicke
```
json
{
"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
如公众号管理员第一次拒绝该 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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录