# (项目化)企业微信直连
# 一、前置条件
私有化部署,需要满足如下条件:
# 0、满足项目化支持条件
本场景实际是去“微协同私有化服务部署”的能力,将微协同私有化服务的能力全部合并到OA主系统中。
本场景支持:免绑定登录,消息推送
本场景不支持:手动绑定登录,人员同步
本场景涉及项目化定制开发额外投入成本,工作量10人天。
# 1、网络条件
- 协同系统的访问地址是公网地址,必须是域名,并且是备案过的(避免企业微信校验为非法域名,禁止访问),OA在内网的客户可以使用反向代理,分离部署方案。
- (不用手动创建rest账号) 微协同基础配置保存的时候,OA会将rest账号密码保存至oa数据库(rest账号密码的作用就是获取访问OA的token,即是访问权限)。
- qyapi.weixin.qq.com企业微信的接口地址,需要能在oa服务器访问到。
# 2、其他条件
微协同和微协同-私有化两个插件都需要安装
文件夹的层级目录不能有中文名称
微协同域名如果是通过nginx配置的,那么请在nginx-conf配置文件中,将underscores_in_headers on配置信息加到http块中去即可。可参考链接:https://blog.csdn.net/loongshawn/article/details/78199977
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
underscores_in_headers on; //增加此配置即可
#keepalive_timeout 0;
keepalive_timeout 65;
nginx配置 https://open.seeyoncloud.com/v5doc/142/1190/1957.html 在上面配置中还需在part.conf加入以下配置
location ~ /seeyon/wechat/content.do {
proxy_pass http://seeyon_v5_cluster;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_connect_timeout 300;
proxy_read_timeout 300;
proxy_send_timeout 300;
}
location ~ /seeyon/wechat/menu.do {
proxy_pass http://seeyon_v5_cluster;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_connect_timeout 300;
proxy_read_timeout 300;
proxy_send_timeout 300;
}
location ~ /seeyon/wechat/pcapp.do {
proxy_pass http://seeyon_v5_cluster;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect off;
proxy_connect_timeout 300;
proxy_read_timeout 300;
proxy_send_timeout 300;
}
注意:如果oa的域名包含上下文,例如:http://oa.xxx.com/xxxx/seeyon 需要nginx添加配置,修改cookie_path,避免调用rest请求的时候不自动携带session
location /xxxx {
proxy_pass http://backend_server;
# 重写 Set-Cookie 路径
proxy_cookie_path /seeyon /xxxx;
}
# 二、部署企业微信直连插件补丁
# 1、打上补丁
# 三、管理端后台配置
# 1、OA管理后台配置
登录集团管理员账号,点击【微协同管理平台】菜单,进入微协同基础设置页面,然后填写OA域名地址,点击并校验通过
注意:协同服务器地址必须携带协议头和端口,端口后面不能携带任何斜杠和其他路由信息
# 2、配置免绑定登录
如果使用工号进行免绑定,需要看下下面链接如何企业微信新增工号 https://open.seeyoncloud.com/#/faq/faq/v1/share?url=Z2JySmU+MjI1Mw==
# 四、企业微信配置
# 1、创建自建应用
可见范围设置为全员
# 2、oa数据库执行sql
1、首先,将下列的所有参数都获取到 【企业名称】、【CorpID】获取地方如下图
【应用AgentId】、【应用Secret】获取如下图
2、根据上述图例中的参数组装初始化SQL语句(需要注意的是,引号内的内容不要留有空格)
INSERT INTO wechat_account (ID,ACCOUNT_NAME,ACCOUNT_TYPE,CORP_ID,CORP_SECRET,AGENT_ID,CREATE_TIME,UPDATE_TIME,XT_ACCOUNT_ID,EXT_ATTR_1,EXT_ATTR_2,EXT_ATTR_3,EXT_ATTR_4,EXT_ATTR_5,EXT_ATTR_6,EXT_ATTR_7,EXT_ATTR_8,EXT_ATTR_9) VALUES (-1106654060436373475,'企业名称','wechat','CorpID','应用Secret','应用AgentId','2024-08-12 15:30:53.0','2024-08-12 15:30:53.0','协同单位id',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
示例:
INSERT INTO wechat_account (ID,ACCOUNT_NAME,ACCOUNT_TYPE,CORP_ID,CORP_SECRET,AGENT_ID,CREATE_TIME,UPDATE_TIME,XT_ACCOUNT_ID,EXT_ATTR_1,EXT_ATTR_2,EXT_ATTR_3,EXT_ATTR_4,EXT_ATTR_5,EXT_ATTR_6,EXT_ATTR_7,EXT_ATTR_8,EXT_ATTR_9) VALUES (-1106654060436373475,'大海企业','wechat','ww23fb96004ea7ba94','rMlruSYL5Ma18JGHy3UEqpGcrduZUQRfoAicl2Y37qc','1000004','2024-08-12 15:30:53.0','2024-08-12 15:30:53.0','6543897130257368270',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
# 3、配置菜单
1、主页菜单地址获取 替换{协议头}、{corpid}、{oa域名}、{oa端口}、{上一步插入sql的id}(注意是id,不是XT_ACCOUNT_ID)、{应用的agentid},括号也一起替换 PS: oa域名不要协议头和端口 PS:http时,{协议头}替换成http,https时,{协议头}替换成https
https://open.weixin.qq.com/connect/oauth2/authorize?appid={corpid}&redirect_uri={协议头}%3A%2F%2F{oa域名}%3A{oa端口}%2Fseeyon%2Fwechat%2Fmenu.do%3Fmethod%3DgetMenu%26accountid%3D{上一步插入sql的id}&response_type=code&scope=snsapi_privateinfo&state=123&agentid={应用的agentid}#wechat_redirect
如果是443端口或者80端口,用下面链接替换
https://open.weixin.qq.com/connect/oauth2/authorize?appid={corpid}&redirect_uri={协议头}%3A%2F%2F{oa域名}%2Fseeyon%2Fwechat%2Fmenu.do%3Fmethod%3DgetMenu%26accountid%3D{上一步插入sql的id}&response_type=code&scope=snsapi_privateinfo&state=123&agentid={应用的agentid}#wechat_redirect
2、跳转链接获取 输入企业corpid点击生成应用url,复制地址
3、点击自定义菜单
4、新增两个菜单,一个主页,一个待办工作 5、填写名称和地址 地址就用1、2步的地址
6、配置完成两个菜单
# 4、配置可信域名和可信IP
1、点开自建应用
2、**设置可信域名,填写OA域名,要带上端口号,如果是443/80端口的话不带上端口。请先点击【申请校验域名】,然后操作下一步,下载文件。**待下一步操作完毕后,域名校验则会通过。 配置的目的是企业微信跳转自建应用的时候,跳转地址必须是这里配置的域名才能跳转。
3、将下载的txt认证文件放到 \ApacheJetspeed\webapps\ROOT目录下 这一步目的是企业微信验证域名的时候,会请求域名根目录下的txt文件来验证域名所属
4、配置oa服务的IP(内网地址外网地址都配上)
配置的目的是,oa调用企业微信接口获取数据的时候,调用方必须是配置里的ip才能成功调用。
# 5、设置应用主页
1、进入企业微信后台【应用管理】找到微协同所属的自建应用,点击【应用主页】根据弹框页面提示将地址粘贴到该处 (第三步配置菜单的第一步获取的主页地址)
# 五、消息配置
登录OA后台,按照下图所示进行配置即可
# 错误及解决方案
1、报错:”企业微信认证失败,请稍后再试“
解决:访问qyapi.weixin.qq.com不通,需要开通
2、基础设置保存报错weixin.label.noPlgin
解决:安装微协同-私有化插件
3、报错“JSONObject["open _userid"] not found”
解决,查看日志,获取ip,配置可信ip
4、报错“OA凭证异常,请检查微协同基础配置是否通过”
解决:基础配置重新报错一下,等2分钟后再试一下
5、移动端正常跳转,pc跳转在默认浏览器打开的时候卡住
原因:企业微信配置的可信域名是443/80端口的,跳转链接的时候自动去掉了端口号,导致跳转链接和配置的可信域名不一致,报错不是可信域名 解决:企业微信可信域名在端口号为443/80的时候不配置端口号
6、主页不想跳转allApps,想跳转自定义的菜单
解决:不设置主页地址