企業微信創建自建應用-1(管理端)


企業微信逐步收緊通訊錄權限搞的第三方服務商雞飛狗跳,如果對權限要求比較高的話盡量使用自建應用模式。兩種模式大部分API都相同,重構一個自建應用版本工作量不大

剛好通過這次重構項目記錄下創建自建應用的步驟。

為了習慣,分成了管理端(后台,在瀏覽器輸入網址方式)+手機端(電腦端的企業微信登錄也算手機端)兩部分。

文檔鏈接:https://work.weixin.qq.com/api/doc/90000/90135/91022

1、登錄企業微信

點擊應用管理-》應用-》自建-》創建應用

 

 

 2、創建應用后,agentid和secret后面會用到,corpid有的是wx開頭,有的以ww開頭。

 3、如果使用企業微信掃碼登錄的話,需要在這里設置授權回調域名

 

 

 

 

 4、需要注意的是這個回調域名必須嚴格和下面的redirect_uri一致

 

 

 

開發者需要構造如下的鏈接來獲取code參數:

  1. https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=CORPID&agentid=AGENTID&redirect_uri=REDIRECT_URI&state=STATE

參數說明

參數 必須 說明
appid 企業微信的CorpID,在企業微信管理端查看
agentid 授權方的網頁應用ID,在具體的網頁應用中查看
redirect_uri 重定向地址,需要進行UrlEncode
state 用於保持請求和回調的狀態,授權請求后原樣帶回給企業。該參數可用於防止csrf攻擊(跨站請求偽造攻擊),建議企業帶上該參數,可設置為簡單的隨機數加session進行校驗

若提示“該鏈接無法訪問”,請檢查參數是否填寫錯誤,如redirect_uri的域名與網頁應用的可信域名不一致

返回說明
用戶允許授權后,將會重定向到redirect_uri的網址上,並且帶上code和state參數

redirect_uri?code=CODE&state=STATE

若用戶禁止授權,則重定向后不會帶上code參數,僅會帶上state參數

redirect_uri?state=STATE

示例:

    1. 假定當前
    2. 企業CorpIDwxCorpId
    3. 開啟授權登錄的應用ID1000000
    4. 登錄跳轉鏈接:http://api.3dept.com
    5. state設置為:weblogin@gyoss9
    6. 需要配置的授權回調域為:api.3dept.com
    7. 根據URL規范,將上述參數分別進行UrlEncode,得到拼接的OAuth2鏈接為:
    8. https://open.work.weixin.qq.com/wwopen/sso/qrConnect?appid=wxCorpId&agentid=1000000&redirect_uri=http%3A%2F%2Fapi.3dept.com&state=web_login%40gyoss9

 5、獲取用戶訪問身份

該接口用於根據code獲取成員信息

請求方式:GET(HTTPS)
請求地址:https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
參數說明:

參數 必須 說明
access_token 調用接口憑證
code 通過成員授權獲取到的code,最大為512字節。每次成員授權帶上的code將不一樣,code只能使用一次,5分鍾未被使用自動過期。

權限說明:
跳轉的域名須完全匹配access_token對應應用的可信域名,否則會返回50001錯誤。
返回結果:
a) 當用戶為企業成員時返回示例如下:

  1. {
  2. "errcode": 0,
  3. "errmsg": "ok",
  4. "UserId":"USERID"
  5. }
參數 說明
errcode 返回碼
errmsg 對返回碼的文本描述內容
UserId 成員UserID。若需要獲得用戶詳情信息,可調用通訊錄接口:讀取成員

b) 非企業成員授權時返回示例如下:

  1. {
  2. "errcode": 0,
  3. "errmsg": "ok",
  4. "OpenId":"OPENID"
  5. }
參數 說明
errcode 返回碼
errmsg 對返回碼的文本描述內容
OpenId 非企業成員的標識,對當前企業唯一

出錯返回示例:

    1. {
    2. "errcode": 40029,
    3. "errmsg": "invalid code"
    4. }

6、使用senparc庫可以減少開發工作量,示例:

senparc.Weixin.QY.AdvancedAPIs
獲取用戶id,Senparc.Weixin.QY.AdvancedAPIs.OAuth2Api.GetUserId

7、為了處理接收通訊錄回調消息,需要設置接收事件服務器,這里的secret如果不進行通訊錄寫操作的話,不需要使用.

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM