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

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结合PyWebView库打造跨平台桌面应用

《Python结合PyWebView库打造跨平台桌面应用》随着Web技术的发展,将HTML/CSS/JavaScript与Python结合构建桌面应用成为可能,本文将系统讲解如何使用PyWebView... 目录一、技术原理与优势分析1.1 架构原理1.2 核心优势二、开发环境搭建2.1 安装依赖2.2 验

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文