C#如何在釘釘開發平臺中創建部門

来源:http://www.cnblogs.com/isaboy/archive/2016/04/13/c_ddtalk_api_open.html
-Advertisement-
Play Games

釘釘是阿裡巴巴專為中小企業和團隊打造的溝通、協同的多端平臺,釘釘開放平臺旨在為企業提供更為豐富的辦公協同解決方案。通過釘釘開放平臺,企業或第三方合作伙伴可以幫助企業快速、低成本的實現高質量的移動微應用,實現生產、管理、協作、運營的移動化。官網的列子往往都是java,php和nodejs的,下麵我用c ...


  釘釘是阿裡巴巴專為中小企業和團隊打造的溝通、協同的多端平臺,釘釘開放平臺旨在為企業提供更為豐富的辦公協同解決方案。通過釘釘開放平臺,企業或第三方合作伙伴可以幫助企業快速、低成本的實現高質量的移動微應用,實現生產、管理、協作、運營的移動化。官網的列子往往都是java,php和nodejs的,下麵我用c#來實現一個簡單的列子,來說明如何與釘釘進行交互:

  1 創建一個網站:

  

  其中官網有如何進行賬號註冊等開發的準備工作,這裡不闡述。假設你已經成功申請了企業賬號,然後獲取了CorpId和CorpSecret。這裡我創建一個DDConfig類來保存這兩個值.

  2 編寫DDHelper類

DDHelper類主要為了與釘釘API進行交互,實現Get和Post請求處理,代碼如下:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.IO;
  6 using HttpRequest;
  7 namespace myDDDev
  8 {
  9     public static class DDHelper
 10     {
 11         public static string GetAccessToken(HttpRequest.HttpHelper.HttpResult result)
 12         {
 13            
 14             if (result!=null)
 15             {
 16                 StreamReader myStreamReader = new StreamReader(result.Result, System.Text.Encoding.GetEncoding("utf-8"));
 17                 string retString = myStreamReader.ReadToEnd();
 18 
 19                 M_AccessToken oat = Newtonsoft.Json.JsonConvert.DeserializeObject< M_AccessToken>(retString);
 20 
 21                 if (oat!=null)
 22                 {
 23                    if(oat.errcode==0)
 24                     {
 25                         return oat.access_token;
 26                     }
 27                 }
 28             }
 29             return "";
 30         }
 31         public static string GetAccessToken(string url)
 32         {
 33 
 34             if (url != "")
 35             {
 36                 try
 37                 {
 38                     HttpRequest.HttpHelper.HttpResult result = HttpRequest.HttpHelper.Get(url);
 39                     M_AccessToken oat = Newtonsoft.Json.JsonConvert.DeserializeObject<M_AccessToken>(result.ToStringResult());
 40 
 41                     if (oat != null)
 42                     {
 43                         if (oat.errcode == 0)
 44                         {
 45                             return oat.access_token;
 46                         }
 47                     }
 48                 }
 49                 catch(Exception ex)
 50                 {
 51                     throw;
 52                 }
 53             }
 54             return "";
 55         }
 56 
 57         public static string CreateDept(string url,string param)
 58         {
 59 
 60             if (url != "")
 61             {
 62                 try
 63                 {
 64                     HttpRequest.HttpHelper.HttpResult result = HttpRequest.HttpHelper.Post(url, param, "application/json");
 65                     DDResult oat = Newtonsoft.Json.JsonConvert.DeserializeObject<DDResult>(result.ToStringResult());
 66 
 67                     if (oat != null)
 68                     {
 69                         if (oat.errcode == 0)
 70                         {
 71                             return "0";
 72                         }
 73                     }
 74                 }
 75                 catch (Exception ex)
 76                 {
 77                     throw;
 78                 }
 79             }
 80             return "1";
 81         }
 82 
 83 
 84 
 85     }
 86     //{"access_token":"","errcode":0,"errmsg":"ok"}
 87     public class M_AccessToken
 88     {
 89         public string access_token { get; set; }
 90         public int errcode { get; set; }
 91 
 92         public string errmsg { get; set; }
 93 
 94 
 95     }
 96     public class DDResult
 97     {
 98        
 99         public int errcode { get; set; }
100         public string errmsg { get; set; }
101 
102 
103     }
104 }

  3 創建部門處理

在index.aspx.cs中編寫創建部門的邏輯,代碼如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Web;
 5 using System.Web.UI;
 6 using System.Web.UI.WebControls;
 7 using System.IO;
 8 using HttpRequest;
 9 namespace myDDDev
10 {
11     public partial class index : System.Web.UI.Page
12     {
13         protected void Page_Load(object sender, EventArgs e)
14         {
15             try
16             {
17                 //http://ddtalk.github.io/dingTalkDoc/
18                 //獲取AccessToken
19                 //開發者在調用開放平臺介面前需要通過CorpID和CorpSecret獲取AccessToken。
20                 //獲取AccessToken的方法是向 https://oapi.dingtalk.com/gettoken?corpid=id&corpsecret=secrect GET請求。
21                 string getUrl = string.Format("https://oapi.dingtalk.com/gettoken?corpid={0}&corpsecret={1}", DDConfig.__CorpID, DDConfig.__CorpSecret);
22 
23                 //access_token 會失效,需要定期獲取;
24                 string access_token = DDHelper.GetAccessToken(getUrl);
25 
26                 /*
27                 開發者獲取AccessToken後便可以調用開放平臺其他介面。
28                 以獲取部門列表介面為例,獲取部門列表介面為:
29                 oapi.dingtalk.com/department/list
30                 在請求該介面時,需要將獲取的AccessToken作為請求參數拼裝到URL中:
31                 https://oapi.dingtalk.com/department/list?access_token=ACCESS_TOKEN
32                 */
33                 //添加部門測試
34                 string postUrl = string.Format("https://oapi.dingtalk.com/department/create?access_token={0}", access_token);
35                 string param = "{\"access_token\":\"" + access_token + "\",\"name\":\"後勤部\",\"parentid\":\"1\",\"order\":\"3\",\"createDeptGroup\":\"false\"}";
36                 //HttpRequest.HttpHelper.HttpResult result = HttpRequest.HttpHelper.Post(postUrl, param, "application/json");
37                 //Response.Write(result.ToStringResult());
38                 //code=0 表示創建從成功
39                 string code = DDHelper.CreateDept(postUrl, param);
40                 if(code=="0")
41                 {
42                     Response.Write("創建成功");
43                 }
44             }
45              catch(Exception ex)
46             {
47                 Response.Write(ex.Message);
48             }
49         }
50     }
51 }
52  

  

 4 手機驗證

 在手機上用釘釘客戶端查看是否創建部門成功,如下圖所示:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Zabbix簡介 Zabbix是一個基於WEB界面的提供分散式系統監視以及網路監視功能的企業級的開源解決方案。zabbix能監視各種網路參數,保證伺服器系統 的安全運營;並提供柔軟的通知機制以讓系統管理員快速定位/解決存在的各種問題。zabbix由2部分構成,zabbix server與可選組件za ...
  • 轉自 http://www.cnblogs.com/yuxc/archive/2012/08/02/2620003.html 命令 下麵將要介紹的所有命令都需要sudo!使用時請將“packagename”和“string”替換成您想要安裝或者查找的程式。 * apt-get update——在修改 ...
  • 根據上篇配置的環境,接下來說明在zabbix agent上執行遠程命令是如何完成的。 遠程命令受到一些限制: (1)在agent執行遠程命令必須給zabbix用戶定義sudu規則: (2)不支持active模式的agent (3)不支持代理模式 (4)命令長度不得超過255個字元 (5)可以使用巨集 ...
  • 一、Linux目錄結構 windows系統中主要以存儲介質為主(磁碟)。 UNIX和Linux系統中主要是以目錄為主(以樹形目錄結構的形式構建整個系統)。 1. FHS(Filesystem Hiernrchy Standard)標準 【FHS標準是文件系統層次結構標準】 FHS定義了系統中每個區域 ...
  • 最近在一次調CentOS系統解析度的時候出了意外,造成的結果就是登錄後提示“Could not apply the stored configuration for monitors”,結果上網一搜,原來是我在改解析度的時候被系統創建了顯示器配置文件,等我一登錄系統就讀取配置文件,發現沒有匹配的顯示 ...
  • 現在,不使用資料庫的軟體,還真不能稱其為軟體,只能稱作程式。在Windows平臺下,MSSQLServer已深入人心,根深蒂固。但是在Linux平臺下,取而代之的是MySQL,所以下麵我就如何在Linux平臺下安裝MySQL做了一些嘗試。 一、安裝與配置 1、下載必需的MySQL軟體包,我們可以去M ...
  • 介紹 tr命令可以對來自標準輸入的字元進行替換、壓縮和刪除。它可以將一組字元變成另一組字元。 語法 tr [OPTION]... SET1 [SET2] 註意:SET2是可選項 OPTION: 字元集代碼: 示例: 1.不帶參數將SET2替換SET1替換,且SET1長度大於SET2 a被替換成1,b ...
  • 最近公司沒項目.所以所幸學學JS.畢竟很多人和我一樣.屬於培訓機構出來的.JS基礎也很差. 面試的時候面試官問你 .你會JS不.你會毫不猶豫的回答會.因為你確實用過.但是真正會的或許只是以前項目中需要的方法. 鑒於這種情況 我決定把JS基礎篇的東西像JAVA或.net一樣在博客園闡述一到. 雖然第一 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...