From d5dda936e3af5b6f0bab264d2af5015a6ab6c23e Mon Sep 17 00:00:00 2001 From: wangyaqi Date: Wed, 8 Mar 2023 20:19:57 +0800 Subject: [PATCH] docs: update secure network --- docs/uniCloud/client-sdk.md | 9 ++-- docs/uniCloud/secure-network.md | 73 +++++++++++++++++++++++++++++++-- 2 files changed, 74 insertions(+), 8 deletions(-) diff --git a/docs/uniCloud/client-sdk.md b/docs/uniCloud/client-sdk.md index 3a09f50a3..ba1369baf 100644 --- a/docs/uniCloud/client-sdk.md +++ b/docs/uniCloud/client-sdk.md @@ -425,9 +425,10 @@ uniCloud.offNeedLogin(log) **参数** -|参数 |类型 |必填 |默认值 |说明 | -|--- |--- |--- |--- |--- | -|callLoginByWeixin|boolean|否 |false |是否在安全网络初始化同时执行一次uni-id-co的微信登录| +|参数 |类型 |必填 |默认值 |说明 | +|--- |--- |--- |--- |--- | +|callLoginByWeixin|boolean|否 |false |是否在安全网络初始化同时执行一次uni-id-co的微信登录,配置为false时不进行微信登录仅调用uni-id-co的secureNetworkHandshakeByWeixin方法进行握手 | +|openid |string |否 |- |新增于HBuilderX 3.7.7,传入此参数后此方法内部不再调用uni-id-co的任何方法,此时需要由开发者自行实现一些凭据的存储逻辑,详情参考:[不使用uni-id-pages时如何使用微信小程序安全网络](secure-network.md#mp-weixin-without-uni-id-pages) | **示例** @@ -440,8 +441,8 @@ uniCloud.offNeedLogin(log) const res = await uniCloud.initSecureNetworkByWeixin({ callLoginByWeixin: true }) - // #endif console.log('initSecureNetworkByWeixin', res); + // #endif console.log('App Launch') } } diff --git a/docs/uniCloud/secure-network.md b/docs/uniCloud/secure-network.md index 97cdf9d16..d20f8af05 100644 --- a/docs/uniCloud/secure-network.md +++ b/docs/uniCloud/secure-network.md @@ -146,18 +146,19 @@ App和微信两个平台细化说明如下: 如果项目之前已经使用过uni-id-pages和uni-open-bridge,则上述步骤可省略。 -6. 在应用的生命周期 `onLaunch` 调用 `uniCloud.initSecureNetworkByWeixin()`,进行安全网络请求前的握手操作,关于此接口详细描述见:[uniCloud.initSecureNetworkByWeixin](client-sdk.md#init-secure-network-by-weixin) +6. 在应用的生命周期 `onLaunch`(能保证在调用安全网络请求前调用完成的时机均可) 调用 `uniCloud.initSecureNetworkByWeixin()`,进行安全网络请求前的握手操作,关于此接口详细描述见:[uniCloud.initSecureNetworkByWeixin](client-sdk.md#init-secure-network-by-weixin) + +对于使用uni-id-pages的项目App.vue页面需要补充如下代码,不使用uni-id-pages的开发者需要按照此文档进行操作:[不使用uni-id-pages时如何使用微信小程序安全网络](#mp-weixin-without-uni-id-pages) -App.vue页面需要补充如下代码: ```js +``` + +云函数内需要调用[uni-open-bridge-common](uni-open-bridge.md#uni-open-bridge-common)将微信应用级access_token及登录用户的session_key同步到uniCloud数据库,以便安全网络云端能从微信获取解密用参数。 + +::: warning uni-open-bridge-common使用注意事项 +uni-open-bridge-common仍依赖uni-id的配置获取微信小程序appid,如何配置请参考:[uni-id config](uni-id-pages.md#config) +::: + +如果从自有服务器同步access_token和session_key到uniCloud数据库内可以使用uni-open-bridge提供的url化调用方式,请参考:[uni-open-bridge url化调用](uni-open-bridge.md#cloudurl) + +如果从云函数内同步access_token和session_key给安全网络按如下文档进行 + +**云函数存储微信小程序应用级access_token** + +开发者应在自己云函数获取access_token,传递给uni-open-bridge-common进行存储,以供安全网络使用。或使用uni-open-bridge云函数的定时任务自动获取access_token,参考:[应用级access_token](uni-open-bridge.md#access_token) + +微信access_token有一些特性,处理不好容易出现bug,请务必详读微信公众平台关于access_token的说明(微信小程序、公众号逻辑一样):[微信公众平台access_token](https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html) + +```js +await require('uni-open-bridge-common').setAccessToken({ + dcloudAppid: '__UNI__xxx', + platform: 'weixin-mp' +}, { + access_token: accessToken +}, 7200) // 新获取的accessToken有效期是2小时 +``` + +**云函数存储微信用户session_key** + +开发者应在用户调用微信登录使将openid、session_key传递给uni-open-bridge-common进行存储,以供安全网络使用 + +```js +await require('uni-open-bridge-common').setSessionKey({ + dcloudAppid: '__UNI__xxx', + openid, + platform: 'weixin-mp' +}, { + session_key: sessionKey +}, 30 * 24 * 60 * 60) // session_key并没有固定有效期,暂以30天进行存储 +``` + ## 客户端强制验证@verify-client > 新增于 HBuilderX 3.6.8 -- GitLab