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

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开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Linux链表操作方式

《Linux链表操作方式》:本文主要介绍Linux链表操作方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、链表基础概念与内核链表优势二、内核链表结构与宏解析三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势六、典型应用场景七、调试技巧与

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

Java Multimap实现类与操作的具体示例

《JavaMultimap实现类与操作的具体示例》Multimap出现在Google的Guava库中,它为Java提供了更加灵活的集合操作,:本文主要介绍JavaMultimap实现类与操作的... 目录一、Multimap 概述Multimap 主要特点:二、Multimap 实现类1. ListMult

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技