# 集成到企业微信

{% hint style="info" %}

### 如果O2OA成功接入企业微信，O2OA将会自动从企业微信拉取所有的人员和组织进行同步，O2OA的所有人员和组织以企业微信中创建的组织架构为准（ 本地已经创建的人员和组织将保留不会被删除，可能会造成人员和组织重复 ）。 <a href="#h2_1" id="h2_1"></a>

{% endhint %}

> ### O2OA接入企业微信建议先配置好企业微信应用，待组织和人员从企业微信同步完成后，再进行组织和人员的信息编辑，避免人员和组织信息的重复创建。 <a href="#h2_2" id="h2_2"></a>

## 一、注册企业微信号（自行准备） <a href="#h1_3" id="h1_3"></a>

注册地址：<https://work.weixin.qq.com/，此过程需要提供使用微信的企业相关信息。>

## 二、获取企业CropId信息 <a href="#h1_4" id="h1_4"></a>

注册成功后，使用管理员账号登录企业微信，在\[我的企业]信息最后一行可以获取企业的CropId，如下图所示：

![我的企业信息](https://3148786149-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmN_rNQCcekD6lUTyjN%2F-LpMXQVWf60y0YIYOMMh%2F-LpMXlQ1tuLmzYZAFrXO%2F07e2b7704784ec8927b4eb610fb8ea48b16.jpg?alt=media\&token=ef40815a-8439-4cd8-8587-5dd12be8643f)

## 三、获取CropSecret信息 <a href="#h1_4" id="h1_4"></a>

在管理工具 - 通讯录同步配置里进行API信息查询和配置

![管理工具](https://3148786149-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmN_rNQCcekD6lUTyjN%2F-LpMXQVWf60y0YIYOMMh%2F-LpMY5kxnrABRjt9EOAy%2Fecbe863bf8af5344779bdb5b47dde8379b6.jpg?alt=media\&token=d06b3ef2-8045-4682-8756-1579b27da752)

&#x20;配置同步方式、权限，并且获取Secret，该Secret就是后续需要配置到O2OA里的**CropSecret**信息:

![通讯录同步](https://3148786149-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmN_rNQCcekD6lUTyjN%2F-LpMXQVWf60y0YIYOMMh%2F-LpMYAs6POxvK7AzKbJe%2F70b5beddedcb09f336ef033644673dd8ccf.jpg?alt=media\&token=1ef6a023-728d-4fc2-8d43-e10452722598)

## 四、添加O2OA为企业微信自建应用 <a href="#h1_5" id="h1_5"></a>

注册成功后，使用管理员账号登录企业微信，如下图所示：

![企业微信管理控制台](https://3148786149-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmN_rNQCcekD6lUTyjN%2F-LpMYIkW1Q6rc3ULqDy9%2F-LpMY_Rj9QuqOdk6Vvfd%2Fb1da324dd56723d2fd3ce88c061b00c97ef.jpg?alt=media\&token=30d85e71-26ff-4227-adfe-676b801bc26f)

点击\[应用与小程序]，如下图所示界面：

![应用与小程序](https://3148786149-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmN_rNQCcekD6lUTyjN%2F-LpMYIkW1Q6rc3ULqDy9%2F-LpMYkWeEnKKgJRxfgO3%2F28a23f72b07f86fdd975fd22bb689c8914d.jpg?alt=media\&token=e510cd0f-5df0-4bdb-9283-e92705aeec05)

如上图所示，点击\[创建应用]，继续在自建程序区域创建应用：

![创建自建应用](https://3148786149-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmN_rNQCcekD6lUTyjN%2F-LpMYIkW1Q6rc3ULqDy9%2F-LpMYq95C-c00G2iNEao%2F829440fc2cbd56f13c6ebee3e0d27431981.jpg?alt=media\&token=db0b69bb-9b37-4017-ae63-767b5ec59c5a)

填写好应用相关信息后进行应用创建：填写好应用相关信息后进行应用创建：

```
应用LOGO：可以自行制作合适大小的LOGO，此LOGO将在企业微信中展示。
应用名称：此应用的具体名称，可以随意命名，如O2OA，企业办公，XXOA都可以。
应用介绍：此应用的具体用途介绍。
可见范围：可使用此应用的人员范围设定，可以选择组织和个人成员。
```

应用创建完成后，如下图所示界面：

![应用创建完成](https://3148786149-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmN_rNQCcekD6lUTyjN%2F-LpMYIkW1Q6rc3ULqDy9%2F-LpMZ5wCUt3ZYm2rK-CK%2F4627af194ba3a85652d778572c5ea851ce0.jpg?alt=media\&token=12765a10-19be-4c0f-a879-70abb1d86da7)

您可以在界面中获取**AgentId**信息，这两个信息以及之前获取的CropId将配置到O2OA相关的接入配置中，请牢记此信息。

### &#x20;**网页授权及JS-SDK**

授权文件放置路径：o2server/servers/webServer/

### &#x20;**工作台应用主页**

> [https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID\&redirect\_uri=https%3A%2F%2F\[host\]\[port\]%2Fx\_desktop%2Fqiyeweixinsso.html%3Fredirect%3Dportalmobile.html%3Fid%3D\*\*\*\*\*\*\*\*\*\&response\_type=code\&scope=snsapi\_base\&agentid=1000004\&#wechat\_redirect](https://www.o2oa.net)

其中：

```
appid : 企业的corpId
host : O2OA服务器提供服务的域名
port : O2OA服务器提供服务的端口
AgentId : 应用的agentId
```

{% hint style="info" %}
&#x20;**redirect\_uri参数需要使用urlencode进行编码，不然会遇到50001错误，redirect\_uri不是可信域名。**

**这个url是：**[**http://\[host\]:\[port\]/x\_desktop/qiyeweixinsso.html?redirect=portalmobile.html?id=\*\*\*\*\*\*\*\*\*\*\*\***](https://www.o2oa.net) **这样的形式。后面跟了一个redirect参数，就是需要跳转到一个门户页面，id就是门户的id，不配置这个参数也行，进入的是一个默认的待办列表页面。**
{% endhint %}

## 五、O2OA接入配置 <a href="#h1_6" id="h1_6"></a>

1、进入o2oa安装目录，从o2server/configSample 目录下拷贝 qiyeweixin.json 到 o2server/config 目录（如果已经复制过了，请跳过此步骤）；

2、使用文本编辑器打开qiyeweixin.json进行编辑：

```
{
  "enable": false,
  "syncCron": "10 0/10 * * * ?",
  "forceSyncCron": "10 45 8,12 * * ?",
  "apiAddress": "https://qyapi.weixin.qq.com",
  "corpId": "",
  "corpSecret": "",
  "agentId": "",
  "token": "",
  "encodingAesKey": "",
  "messageEnable": true
}
```

参数说明：

```
"enable": "是否启用企业微信接入: true | false",
"syncCron": "拉入同步时间表达式, 默认每10分钟同步一次(10 0/10 * * * ?).",
"forceSyncCron": "强制拉入同步cron, 默认在每天的8点和12点强制进行同步(10 45 8,12 * * ?)",
"apiAddress": "企业微信api服务器地址, https://qyapi.weixin.qq.com",
"corpId": "企业微信参数corpId（从企业微信后台管理信息中获取 '企业ID'）",
"corpSecret": "企业微信参数corpSecret（从企业微信后台管理信息中获取 'Secret'）",
"agentId": "企业微信参数agentId（从企业微信后台管理信息中获取 'AgentId'）",
"messageEnable": "是否允许推送消息到企业微信: true | false"
```

{% hint style="info" %}
&#x20;**token**和**encodingAesKey**可以先填1，不然无法进行保存，对微信集成不会产生影响。
{% endhint %}

完成以上配置后重启O2OA，即可完成O2OA在企业微信中的接入，可以在企业微信 - 工作台中看到自己配置的企业应用。

![企业微信工作台](https://3148786149-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmN_rNQCcekD6lUTyjN%2F-LpMZwLBq4_VmRJ2Of8N%2F-LpM_OgM8XnVJldWjHkm%2F69cc9d7766cfc9e405a3c4a57426c23c3e6.jpg?alt=media\&token=b83c2ae3-dc6b-46af-b391-fd13efeaa362)

{% hint style="info" %}
&#x20;**O2OA集成到微信时，需要将O2OA的HTTPS开启。方法请参考**[**《如何配置O2OA服务器来启用HTTPS（SSL）》**](https://my.oschina.net/u/3931542/blog/2999285)
{% endhint %}

## **六**、手工从企业微信拉取组织人员数据 <a href="#h1_7" id="h1_7"></a>

&#x20;服务地址：http\://**localhost**:20030/x\_program\_center/jest/index.html

服务名称：QiyeweixinAction.pullSync

如下图所示界面，点击GET之后，观察服务器控制台或者日志文件信息（o2server/logs），可以查看到同步日志。

{% hint style="info" %}
&#x20;**不要多次点击GET，**&#x70B9;击一次后，控制台会有，正在拉取组织人员信息相关的日志。
{% endhint %}

![中心服务器API界面](https://3148786149-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LmN_rNQCcekD6lUTyjN%2F-LpM_X2T8d9dbnkizr8C%2F-LpMa82KbsXjIw9ly_cp%2FQQ%E6%88%AA%E5%9B%BE20190922141109.png?alt=media\&token=d724fbe8-b1e8-45ca-be31-981a34462e6f)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://o2oa.gitbook.io/course/ping-tai-shi-shi/yi-dong-ban-gong-pei-zhi-jie-shao/ji-cheng-dao-qi-ye-wei-xin.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
