前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Bug周刊】Vol.3

【Bug周刊】Vol.3

作者头像
客怎眠qvq
发布2024-08-07 14:03:04
1040
发布2024-08-07 14:03:04
举报
文章被收录于专栏:某菜鸟の小屋

【Bug周刊】Vol.3

客怎眠qvq2024-05-132024-07-26

前言

最近开发中遇到很多相同的问题,下意识去翻自己的历史记录,但又没能快速定位。我的trilium一直用来记录自己的周报和相关教程,对于常见的bug和修复方案也找不到合适的地方,只能穿插在日报的历史中,随时间沉没。无意间翻到子舒的奇趣周刊,Bug周刊也由此而生。

鸽了好几个月,开心。

企业微信集成

表结构迁移

上级单位A需要在定制的企业微信中,集成一个公司管理系统的登录,从而通过微信直接推送对应的审批事项。

本地开发需要上级单位A的数据,但是访问该数据库又需要对应的VPN,于是我只能在公司的测试环境中新建一个相同的表结构,在测试完毕后,同步到A的生产环境。

查询了一下A提供的视图数据,及对应的字段类型

代码语言:javascript
复制
SELECT COLUMN_NAME, DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'table_name'
ORDER BY ORDINAL_POSITION

真有你的,日期、时间、生日类型都是 varchar,我说我折腾一小时,JPA一直映射不上去TNND,别忘了sqlServer的数据表中只能有一列数据类型为 timestamp

授权接入

企业微信的授权流程如下:

构造授权链接 -> 获取code -> 获取accessToken -> 根据code和accessToken获取userId(惟一) -> 根据userId查询userInfo -> 接入已有认证

  • 按官方企业微信举例,构造授权链接:
代码语言:javascript
复制
https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&agentid=AGENTID&state=STATE#wechat_redirect

AGENTID 为集成的企业应用id(一般是一串数字即1000xxx),在应用里面看配置信息!!!如果你不知道应该在应用里看id,还是在全局看id(分不清cropId 和 agentId),就直接看开头是不是ww或者wx。CROPID 是企业ID(即ww或wx开头的suite_id)

代码语言:javascript
复制
|—— cropId #企业ID 对应着 appid=CORPID 的值
  |—————— 应用1 #包括应用id和secrect
    |—————— agentId #对应的 agentid=AGENTID 的值
    |—————— secrect #对应的 corpsecret=SECRET 的值
  |—————— 应用2
    |—————— agentId #对应的 agentid=AGENTID 的值
    |—————— secrect #对应的 corpsecret=SECRET 的值

记得在应用的设置里,配置可信域名,否则不予跳转。

如果你的回调域名(redirect_uri)是 www.test.com/auth/wechat,跳转的就是 www.test.com/auth/wechat/?code=CODE&state=STATE,获取CODE的值。

  • 获取企业微信端的 accessToken,我缓存到了redis,避免频繁调用gettoken接口,而受到频率拦截。

获取 accessToken 需要企业微信当前应用的秘钥 secrect 和企业的 cropId,这里我在 apifox 中模拟请求一直获取不到, 400 bad request,折腾到下班,回去打把csgo想起来应该是版本问题,改了请求头的http协议,一切顺畅了ohhhh。

代码语言:javascript
复制
https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
代码语言:javascript
复制
{
  "errcode":0,
  "errmsg":"",
  "access_token": "accesstoken000001",
  "expires_in": 7200
}

不同应用的 agentId、secrect 不同,在新建应用时不能照搬原来构建的授权链接,需要保持一致替换对应的 agentId、secrect,即保持agentId、secrect、由此获得的code、accessToken 的一致性。

  • 根据 code 和 accessToken 获取userId(惟一、可确认用户信息)
代码语言:javascript
复制
https://qyapi.weixin.qq.com/cgi-bin/service/auth/getuserinfo3rd?suite_access_token=SUITE_ACCESS_TOKEN&code=CODE
代码语言:javascript
复制
{
  "errcode": 0,
  "errmsg": "ok",
  "userid":"USERID",
  "user_ticket": "USER_TICKET"
}
  • 根据accessToken、code 获取对应的userInfo

用 userId 作为判断条件从构造的数据表 table_name 中获取 id 对应的用户信息,这里我忘记了sqlServer的引号是单引号,不是双引号。

代码语言:javascript
复制
SELECT  t.userCode,
        t.userId,
        t.phoneNum, 
        t.cardId 
FROM  table_name t
LEFT  JOIN User u on u.phoneNum = t.phoneNum
WHERE   t.userId = :userId
  • 接入系统已有的认证

IDEA连接数据库无法使用安全套接字层

用久了 Navicat,忘记IDEA连接需要开启 trustServerCertificate 为 true了🤣

修改wordpress容器上传文件大小限制

我的一台服务器上以docker的形式部署了wordpress,心血来潮换个主题,但是主题包大小3M就限制了,难绷。

进入 wordpress 容器内,复制 php.ini 配置文件,修改对应的文件大小限制参数。

代码语言:javascript
复制
# wordpress是你wordpress的容器id或名称
docker exec -it wordpress /bin/bash

# 复制配置文件,以便php配置生效 容器本身没有php.ini
cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini

# 修改php.ini
vim /usr/local/etc/php/php.ini

upload_max_filesize = 500M	#文件大小限制
post_max_size = 510M	#post大小限制
memory_limit = 520M		#内存占用限制

# 重启容器
docker restart wordpress

我自己是安装了宝塔,直接进终端改了,一步到位。

参考链接

引用站外地址

【docker】wordpress修改文件上传限制

CSDN

引用站外地址

企业微信开发者中心

weixin

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 【Bug周刊】Vol.3
    • 前言
      • 企业微信集成
        • 表结构迁移
        • 授权接入
      • IDEA连接数据库无法使用安全套接字层
        • 修改wordpress容器上传文件大小限制
          • 参考链接
          相关产品与服务
          容器服务
          腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档