Heim  >  Artikel  >  WeChat-Applet  >  C#-Entwicklung des WeChat-Portals und Anwendungsabteilungsmanagement der Adressbuchverwaltung sowie Entwicklung des WeChat-Unternehmenskontos

C#-Entwicklung des WeChat-Portals und Anwendungsabteilungsmanagement der Adressbuchverwaltung sowie Entwicklung des WeChat-Unternehmenskontos

高洛峰
高洛峰Original
2017-02-18 09:28:472091Durchsuche

Der vorherige Artikel enthält einige grundlegende Informationen zum Enterprise-Konto und stellt vor, wie die Rückrufmethode des Enterprise-Kontos konfiguriert wird, um eine Kommunikationsbrücke mit dem Enterprise-Kontoserver zu erreichen. In diesem Artikel wird hauptsächlich die Entwicklungsarbeit des Unternehmenskontos vorgestellt, die Verwaltungs- und Entwicklungsfunktion für das Adressbuch des WeChat-Unternehmenskontos vorgestellt und erläutert, wie Abteilungsinformationen in der Organisation abgerufen und verwaltet werden.

1. Erstellung und Konfiguration der Unternehmensorganisation

Zunächst können wir eine Organisation im Verwaltungshintergrund des Unternehmenskontos erstellen und darin einige Abteilungen und Personallisten erstellen, um unsere zu erleichtern Entwicklung und Nutzung.

Erstellen Sie beispielsweise eine Stammstruktur von Guangzhou Aiqidi und erstellen Sie dann darin einige Organisationsstrukturen, wie in der folgenden Abbildung dargestellt.

C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理

Fügen Sie dann dem Stammknoten der Organisationsstruktur „Guangzhou Aiqidi“ eine Administratorberechtigung hinzu. In Zukunft können Sie den Berechtigungswert Secret dieses Administrators in der Schnittstelle verwenden Entwicklung. Es wurde ein Anruf getätigt.

C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理

CorpID ist die Identifikation des Unternehmenskontos. Jedes Unternehmenskonto verfügt über einen eindeutigen CorpID-Schlüssel.
Systemadministratoren können über die Rechteverwaltungsfunktion auf der Verwaltungsseite Verwaltungsgruppen erstellen und der Verwaltungsgruppe Zugriffsrechte auf Anwendungen, Adressbücher und Schnittstellen zuweisen. Nach Abschluss kann die Verwaltungsgruppe ein einzigartiges Geheimnis erhalten. Systemadministratoren können die Geheimnisse aller Verwaltungsgruppen über die Berechtigungsverwaltung anzeigen, und andere Administratoren können sie über die Entwickleranmeldeinformationen in den Einstellungen anzeigen.

Der Ersteller meines Unternehmenskontos und der Administrator der Organisationsstruktur „Guangzhou IQidi“ sind unterschiedlich. Da Secret der Anmeldeinformationsschlüssel für die Verwaltungsgruppe ist, ist der Administrator für die Verwaltung verschiedener Organisationsstrukturen verantwortlich Der Wert des Managementgeheimnisses kann unterschiedlich sein. Wenn wir die Schnittstelle aufrufen müssen, müssen wir den Secret-Wert verwenden, der zu unserer eigenen Berechtigungsstufe gehört, wie in der folgenden Abbildung dargestellt.

C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理

Wenn Sie nicht der Ersteller des Unternehmenskontos sind, können Sie einige Berechtigungszuweisungen darin möglicherweise nicht ändern, sondern nur anzeigen.

C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理

2. Erhalten des AccessToken, des weltweit eindeutigen Tickets für den API-Zugriff

Wie beim offiziellen Konto besteht der erste Schritt beim Aufrufen der Unternehmenskonto-API darin Besorgen Sie sich zuerst das Access-Ticket AccessToken. Dieses Ticket ist global und verfügt über eine gewisse Aktualitäts- und Häufigkeitskontrolle. Daher muss es entsprechend zwischengespeichert werden und kann nicht bei jedem Aufruf aktualisiert werden.

Der Hauptlogikcode für das Unternehmenskonto zum Erhalten des Zugriffstickets lautet wie folgt. Die Hauptsache besteht darin, den Secret-Wert des Administrators zu verwenden, um das entsprechende Passwort zu erhalten, damit dieser wissen kann, welche Organisationsstruktur er verwaltet . .

        /// <summary>
        /// 获取每次操作微信API的Token访问令牌        /// </summary>
        /// <param name="corpid">企业Id</param>
        /// <param name="corpsecret">管理组的凭证密钥</param>
        /// <returns></returns>
        public string GetAccessTokenNoCache(string corpid, string corpsecret)
        {            var url = string.Format("http://www.php.cn/{0}&corpsecret={1}",
                                    corpid, corpsecret);

            HttpHelper helper = new HttpHelper();            string result = helper.GetHtml(url);            string regex = "\"access_token\":\"(?<token>.*?)\"";            string token = CRegex.GetText(result, regex, "token");            return token;
        }

Die Beschreibung des WeChat-Unternehmenskontos lautet wie folgt:

Wenn die Unternehmensanwendung das aufruft Unternehmenskontoschnittstelle: Der Unternehmenskontohintergrund überprüft die Rechtmäßigkeit des Zugriffs und die Verwaltungsberechtigungen der entsprechenden Verwaltungsgruppe basierend auf dem AccessToken dieses Zugriffs, um die entsprechenden Ergebnisse zurückzugeben.

Hinweis: Sie sollten die Berechtigungen der Verwaltungsgruppe sorgfältig konfigurieren, solange sie ausreicht. Übermäßige Berechtigungen erhöhen die Möglichkeit eines Missbrauchs und erhöhen die Risiken für die Informationssicherheit.

AccessToken ist das weltweit eindeutige Ticket des Unternehmenskontos, das beim Aufruf der Schnittstelle mitgeführt werden muss. AccessToken muss gegen CorpID ausgetauscht werden und verschiedene Secrets geben unterschiedliche AccessTokens zurück. Unter normalen Umständen ist AccessToken 7200 Sekunden lang gültig. Wiederholte Erfassungen innerhalb des Gültigkeitszeitraums liefern das gleiche Ergebnis und werden automatisch erneuert. Da die Anzahl der API-Aufrufe zum Abrufen von access_token sehr begrenzt ist, wird empfohlen, dass Unternehmen access_token global speichern und aktualisieren. Eine häufige Aktualisierung von access_token begrenzt API-Aufrufe und beeinträchtigt ihr eigenes Geschäft.

2. Pflege der Abteilungsinformationen in der Adressbuchverwaltung

Mit den Zugriffstickets im ersten Abschnitt können wir die API verwenden, um viele Dinge zu tun, einschließlich Funktionen wie z B. das Erhalten, Erstellen, Löschen usw. einer Organisationsstruktur.

Die offizielle Schnittstellendefinition der Kreationsabteilung lautet wie folgt.

  • 请求说明

Https请求方式: POST

http://www.php.cn/

请求包结构体为:

{
   "name": "邮箱产品组",
   "parentid": "1"
}
  • 参数说明

参数 必须 说明
access_token 调用接口凭证
name 部门名称。长度限制为1~64个字符
parentid 父亲部门id。根部门id为1

 

  • 返回结果

{
   "errcode": 0,
   "errmsg": "created",
   "id": 2
}

根据上面的一些类似的接口定义说明,我们先来定义下组织机构部门数据的维护接口,然后在逐步实现和调用。

        #region 部门管理        /// <summary>
        /// 创建部门。        /// 管理员须拥有“操作通讯录”的接口权限,以及父部门的管理权限。        /// </summary>
        CorpDeptCreateJson CreateDept(string accessToken, string name, string parentId);        /// <summary>
        /// 更新部门。        /// 管理员须拥有“操作通讯录”的接口权限,以及该部门的管理权限。        /// </summary>
        CommonResult DeleteDept(string accessToken, int id);        /// <summary>
        /// 删除部门.        /// 管理员须拥有“操作通讯录”的接口权限,以及该部门的管理权限。        /// </summary>
        CorpDeptListJson ListDept(string accessToken);        /// <summary>
        /// 获取部门列表.        /// 管理员须拥有’获取部门列表’的接口权限,以及对部门的查看权限。        /// </summary>
        CommonResult UpdateDept(string accessToken, int id, string name); 
        #endregion

如创建部门的接口实现如下所示,主要就是构建URL和POST的数据包,然后统一调用并获取返回数据,转换为具体的Json对象实体即可。其他接口的实现方式类似,不在赘述。

        /// <summary>
        /// 创建部门。        /// 管理员须拥有“操作通讯录”的接口权限,以及父部门的管理权限。        /// </summary>
        public CorpDeptCreateJson CreateDept(string accessToken, string name, string parentId)
        {            string urlFormat = "http://www.php.cn/{0}";            var data = new
            {
                name = name,
                parentId = parentId
            };            var url = string.Format(urlFormat, accessToken);            var postData = data.ToJson();

            CorpDeptCreateJson result = CorpJsonHelper<CorpDeptCreateJson>.ConvertJson(url, postData);            return result;
        }

CorpDeptCreateJson 对象实体类的定义如下所示,我们主要是根据返回结果进行定义的。

    /// <summary>
    /// 创建部门的返回结果    /// </summary>
    public class CorpDeptCreateJson : BaseJsonResult
    {        /// <summary>
        /// 返回的错误消息        /// </summary>
        public CorpReturnCode errcode { get; set; }        /// <summary>
        /// 对返回码的文本描述内容        /// </summary>
        public string errmsg { get; set; }        /// <summary>
        /// 创建的部门id。        /// </summary>
        public int id { get; set; }
    }

 

 3、部门管理的API调用

 上面小节介绍了如何封装部门管理的API,那么我们封装好了对应的接口和接口实现,怎么样在实际环境里面进行调用处理的呢,为了方便我创建一个小的Winform程序来测试对应API的功能,如下所示。

C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理

下面我们来介绍一下调用的代码和效果展示。

        private void btnCreateDeleteDept_Click(object sender, EventArgs e)
        {
            ICorpAddressBookApi bll = new CorpAddressBookApi();            string name = "测试部门";
            CorpDeptCreateJson json = bll.CreateDept(token, name, "2");            if (json != null)
            {
                Console.WriteLine("创建了部门:{0}, ID:{1}", name, json.id);                //更新部门信息
                name = "测试部门修改名称";
                CommonResult result = bll.UpdateDept(token, json.id, name);                if(result != null)
                {
                    Console.WriteLine("修改部门名称:{0} {1}", (result.Success ? "成功" : "失败"), result.ErrorMessage);
                }                //删除部门
                result = bll.DeleteDept(token, json.id);                if (result != null)
                {
                    Console.WriteLine("删除部门名称:{0} {1}", (result.Success ? "成功" : "失败"), result.ErrorMessage);
                }
            }
            
        }

        /// <summary>
        /// 获取部门列表        /// </summary>
        private void btnListDept_Click(object sender, EventArgs e)
        {
            ICorpAddressBookApi bll = new CorpAddressBookApi();
            CorpDeptListJson list = bll.ListDept(token);            foreach (CorpDeptJson info in list.department)
            {                string tips = string.Format("{0}:{1}", info.name, info.id);
                Console.WriteLine(tips);
            }
        }

C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理

 

 更多C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理 相关文章请关注PHP中文网!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn