#author("2022-12-19T12:57:17+08:00","default:Admin","Admin") #author("2022-12-19T13:26:30+08:00","default:Admin","Admin") [[uni-app]] &color(red){※前提条件:vue3 的uniapp开发}; #contents * 微信小程序的开发准备工作 [#g6aaa73c] 登录下面网址申请所需的 - AppID(小程序ID) - AppSecret(小程序密钥) https://mp.weixin.qq.com ** 配置流程 [#ud237ddc] 服务器域名请在 「小程序后台 - 开发 - 开发设置 - 服务器域名」 中进行配置,配置时需要注意: - 域名只支持 https (wx.request、wx.uploadFile、wx.downloadFile) 和 wss (wx.connectSocket) 协议; - 域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost; - 可以配置端口,如 https://myserver.com:8080,但是配置后只能向 https://myserver.com:8080 发起请求。如果向 https://myserver.com、https://myserver.com:9091 等 URL 请求则会失败。 - 如果不配置端口。如 https://myserver.com,那么请求的 URL 中也不能包含端口,甚至是默认的 443 端口也不可以。如果向 https://myserver.com:443 请求则会失败。 - 域名必须经过 ICP 备案; - 出于安全考虑,api.weixin.qq.com 不能被配置为服务器域名,相关 API 也不能在小程序内调用。 开发者应将 AppSecret 保存到后台服务器中,通过服务器使用 getAccessToken 接口获取 access_token,并调用相关 API; - 不支持配置父域名,使用子域名。 ** 总体思路 [#tf14c5fe] - 创建Vuex进行状态管理(可根据实际需求自行选择是否使用) - 创建一个登录按钮并添加触发事件 - 调用官方uni.getUserProfile() 接口获取用户信息 - 调用官方uni.login() 接口获取临时登录凭证code - 调用后端的登录接口将code 传过去获取token 值 - 登录成功!渲染用户信息到页面中 - 创建一个退出登录按钮并添加触发事件 - 清空 vuex 中的 userinfo和token - 退出成功!跳转到其他页面 * 微信小程序的设置 [#i11a0708] |属性|类型|说明|h |appid|String|微信小程序的AppID| |setting|Object|微信小程序项目设置,参考setting| |functionalPages|Boolean|微信小程序是否启用插件功能页,默认关闭| |requiredBackgroundModes|Array|微信小程序需要在后台使用的能力,详见| |plugins|Object|使用到的插件,详见| |resizable|Boolean|在iPad上小程序是否支持屏幕旋转,默认关闭| |navigateToMiniProgramAppIdList|Array|需要跳转的小程序列表,详见| |permission|Object|微信小程序接口权限相关设置,比如申请位置权限必须填此处详见| |workers|String|Worker 代码放置的目录。 详见| |optimization|Object|对微信小程序的优化配置| |cloudfunctionRoot|String|配置云开发目录,参考setting| |uniStatistics|Object|微信小程序是否开启 uni 统计,配置方法同全局配置| |scopedSlotsCompiler|String|Vue2 作用域插槽编译模式,uni-app 3.1.19+ 开始支持,可选:legacy、auto、augmented,默认:auto| |mergeVirtualHostAttributes|Boolean|合并组件虚拟节点外层属性(目前仅支持 style、class 属性),uni-app 3.5.1+ 开始支持| |embeddedAppIdList|Array|要半屏跳转的小程序appid。详见| |requiredPrivateInfos|Array|地理位置相关接口。详见| |lazyCodeLoading|String|目前仅支持值 requiredComponents,代表开启小程序按需注入特性,详见 #codeprettify{{ XXX }} #hr(); Comment: #comment_kcaptcha