企业微信代开发应用登录操作

2024-04-25 13:12

本文主要是介绍企业微信代开发应用登录操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先声明:企微的文档写得真烂!!!有一些问题,官方情愿在问答区给用户一个个解答,也不愿意在文档写清楚,生怕自己工作量不饱和被优化。

概念说明

代开发应用,是相对于自建应用来说的。自建应用是指企业内部自己开发应用、自己使用应用。
代开发应用,则是服务商(后续称乙方)开发应用,企业(后续称甲方)使用应用。甲、乙双方是不同的企业主体。

乙方创建代开发模板及上线

这边比较简单,进入服务商管理后台创建即可,这里的重点是回调URL,需要自己提前实现好,这个URL要同时支持GET和POST请求,Token和EncodingAESKey随机生成并记录下来。后续企微服务器会调该URL,对于接收到的数据,要解密成明文,供查看和保存。
这个回调URL域名可以是任意主体。
模版创建好后,立即提交审核,十几分钟便能审核通过,审核通过后,立即提交上线。

甲方扫码授权

此时,这个模版便有了一个二维码,甲方的超级管理员去扫码并授权,该模板下班便多了一个应用,这个应用就是给甲方使用的。
进入这个应用,配置权限、可信域名、IP白名单、试用期。
配置好权限后,甲方管理员会收到消息,要点进去确认授权。
配置的可信域名,必须是与甲方同主体,如果不同主体,则无法登录,会抛回调URI参数错误,在配置可信域名时,必须看到输入框下方出现绿色的“已验证”三个字才行。
试用期一定要配置,建议配最大,否则会抛应用已过期的错误。
配置好以后,立即把应用提交审核,审核通过后,立即提交上线。如果不上线,则无法登录,会抛应用已下线的错误。
后续便可以进行应用的真正开发了。

获取应用Secret

这种代开发应用的secret不能直接在管理后台看到,必须需要通过多个接口去获取,下面是步骤:

1、获取suite_access_token

URL:https://qyapi.weixin.qq.com/cgi-bin/service/get_suite_token
MEDTH:POST请求
参数:{
“suite_id”:“xxxxx” ,
“suite_secret”: “xxxxx”,
“suite_ticket”: “xxxxx”
}
响应:{
“suite_access_token”: “kc6D7gYybApa9yeQWsux0s06VDnzyxuhV43DzZx4bW8Xo9paCydzXYN2ZznMR92D_32PDPG8s31hJLdJACxk6UtcleGkhWIJcviAjg5L2V4zsIHhVy8S0HUcZPwOkSb6”,
“expires_in”: 7200
}

suite_id是代开发模板的ID
suite_secret是代开发模板的secret
suite_ticket从回调URL获取,如下图,点击“刷新Ticket”按钮,这个回调URL便会被触发,其Body携带了一条消息,解密它,便能看到suite_ticket。
在这里插入图片描述

2、获取临时授权码auth_code

在这里插入图片描述
如图,进入应用详情页,点击Secret的“重新获取”按钮,此时,回调URL会收到一条消息,解密它,便能得到一个属性叫AuthCode的字段,其值便是auth_code。

3、获取应用Secret

URL:https://qyapi.weixin.qq.com/cgi-bin/service/get_permanent_code?suite_access_token=<suite_access_token>
MEDTH:POST
参数:{
“auth_code”: “6gPzUsXwGS7V-Mvun4bmIxh-4rbq1OUKTGMNB3eL6qrdYSwVFQzFTLSeg_Hb8oVm4yceZe2-2eq_1-meWSwd2fCb1CUv-HzhIgqFyAdHJo8”
}
响应:{
“permanent_code”: “xxxxxxxxxxxxxxxxxxxxxxxxxx”,
“auth_corp_info”: {

},
“auth_info”: {

},
“auth_user_info”: {

}
}

suite_access_token便是我们第一步获取到的suite_access_token,auth_code便是我们第二步获取到的临时授权凭证,响应里面的permanent_code便是应用的secret,保存记录下来。

获取OAuth2的code

自己建一个web应用,部署到服务器,配置Nginx,可以用域名访问这个web。
构造链接

https://open.weixin.qq.com/connect/oauth2/authorize?appid=&redirect_uri=<redirect_uri>&response_type=code&scope=snsapi_privateinfo&state=STATE&agentid=#wechat_redirect

appid是甲方的企业ID
redirect_uri是我们刚刚部署的web应用,域名主体必须是甲方
agentid是应用ID,如下图,甲方进入企微管理后台的应用管理页面,找到应用,便可以看到AgentId。
竟然已经进入甲方管理后台了,也顺便确保应用是已启用状态,可见范围也提前配置好吧。
在这里插入图片描述
最后,把我们构建的链接,丢到甲方的企微聊天记录里,点击打开,如下图,把打开的页面的链接复制出来,就会发现后面附着了code参数
在这里插入图片描述

获取access_token

URL: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=&corpsecret=
MEDTH: GET
响应:{
“errcode”: 0,
“errmsg”: “ok”,
“access_token”: “hq5yWadgAaZevRQpI_sIGiDWr34IwR7Ii4UDQhntBYi2JQ_U696p4VTo_DlIXCnJo_e2RkS1Qfn6xRMc1UzRi1J84LfnnaF2V2gVdy31pRROzxqx7RjStvLge7_Xb7XTfLHFhcXL3T6WUTpJXCPOaImwCOUcfw7uxDRMN0TJuXOjP9NKJhKitEWcFpj5GVfUTwF30o_JWQ6NXpWEkQIprw”,
“expires_in”: 7200
}

corpid是甲方的企业ID,secret是上一步获取到的应用Secret,响应里面的access_token就是我们要的token。

获取userid

URL: https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token=<access_token>&code=
MEDTH: GET
响应:{
“userid”: “wog41ZCAAA8_XXXXXXXXXXXXXXXXXXXXXX”,
“errcode”: 0,
“errmsg”: “ok”,
“user_ticket”: “yatRc3J3nJnz9X_ohppvRaJdkhglNzWQrSAmp2TXEU_TrYHTOxLNH3qQt_TJaf2ohamlvpx_XXXXXXXXXXXXXXXXXXXXXXXXXXXXX”,
“expires_in”: 1800
}

access_token是上一步获取的access_token,code是上上步获取到的OAuth2的Code,此时,我们便得到了企微签发的userid,这个userid是唯一的。
里面还有一个重要的字段,就是user_ticket,后续如果要获取成员敏感数据,则需要用到这个user_ticket。

获取成员信息

URL: https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=<access_token>&userid=
MEDHT: GET
响应:{
“errcode”: 0,
“errmsg”: “ok”,
“userid”: “wog41ZCAAA8_XXXXXXXXXXXXXXXXXXXXXX”,
“name”: “大胸弟”,
“department”: [
1
],
“status”: 1,
“isleader”: 0,
“enable”: 1,
“hide_mobile”: 0,
“order”: [
0
],
“main_department”: 1,
“alias”: “”,
“is_leader_in_dept”: [
0
],
“direct_leader”: []
}

参数我就不解释了,一目了然。
其实代开发应用现在通过这个接口能获取到的数据非常少了,像手机号、邮箱这些都拿不到了。
如果想拿敏感信息,则需要使用下一步的接口。

获取成员明细

URL: https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail?access_token=<access_token>
MEDTH: POST
参数:{
“user_ticket”: <user_ticket>
}
响应:{
“errcode”: 0,
“errmsg”: “ok”,
“userid”: “wog41ZCAAA8_XXXXXXXXXXXXXXXXXXXXXX”,
“gender”: “0”,
“email”: “xxxxxxxx”,
“avatar”: “xxxxxxxx”,
“biz_mail”: “xxxxxxxx”
}

参数我就不解释了,一目了然。access_token、user_ticket都是在前面步骤获取到了。
对于响应的信息,能获取到什么,就看你在配置权限时,配置了什么了。
我这边通过userid来确定唯一性,姓名、邮箱用来前端显示,此时就可以完成登录操作了。

里面还有一个难点,就是怎么去解密数据,这个可以参照官方文档,去找SDK,或者官方的例子,我就不贴代码了,但是要记得,回调URL要同时支持GET和POST请求,两种请求方法都会有请求参数,要分别去解密。

最后,对于自行测试,其实并不需要真正的甲方,乙方也可以充当甲方的角色。也就是说,乙方作为服务商开发应用的同时,也可以作为甲方角色,去授权并使用应用,这样测试就方便多了。

这篇关于企业微信代开发应用登录操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/934780

相关文章

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

SpringBoot操作MaxComputer方式(保姆级教程)

《SpringBoot操作MaxComputer方式(保姆级教程)》:本文主要介绍SpringBoot操作MaxComputer方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录引言uqNqjoe一、引入依赖二、配置文件 application.properties(信息用自己

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

C#中的 Dictionary常用操作

《C#中的Dictionary常用操作》C#中的DictionaryTKey,TValue是用于存储键值对集合的泛型类,允许通过键快速检索值,并且具有唯一键、动态大小和无序集合的特性,常用操作包括添... 目录基本概念Dictionary的基本结构Dictionary的主要特性Dictionary的常用操作

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

C# winform操作CSV格式文件

《C#winform操作CSV格式文件》这篇文章主要为大家详细介绍了C#在winform中的表格操作CSV格式文件的相关实例,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录实例一实例效果实现代码效果展示实例二实例效果完整代码实例一实例效果当在winform界面中点击读取按钮时 将csv中

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

Oracle登录时忘记用户名或密码该如何解决

《Oracle登录时忘记用户名或密码该如何解决》:本文主要介绍如何在Oracle12c中忘记用户名和密码时找回或重置用户账户信息,文中通过代码介绍的非常详细,对同样遇到这个问题的同学具有一定的参... 目录一、忘记账户:二、忘记密码:三、详细情况情况 1:1.1. 登录到数据库1.2. 查看当前用户信息1.

Android开发中gradle下载缓慢的问题级解决方法

《Android开发中gradle下载缓慢的问题级解决方法》本文介绍了解决Android开发中Gradle下载缓慢问题的几种方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、网络环境优化二、Gradle版本与配置优化三、其他优化措施针对android开发中Gradle下载缓慢的问