企业微信将应用安装到工作台

在上篇中介绍了配置小程序应用及指令、数据回调获取第三方凭证;

本篇将介绍如何将应用安装到企业工作台。

添加测试企业

通过【应用管理】->【测试企业配置】添加测试企业。

通过企业微信扫描二维码添加测试企业。

注意:需要扫描的账号为管理员权限。

安装测试应用

安装方式

客户企业授权安装第三方应用有两种发起方式:

1.通过服务商网站的授权链接安装

2.通过企业微信应用市场直接安装

安装测试途径

服务商网站的授权链接方式需要应用已经上线才可实施,

本教程仅讲解如何测试应用市场安装的方式。

企业微信提供两种安装测试途径:

1.从服务商后台安装测试:服务商可在本地应用中对已创建的应用进行安装测试

2.自行构造测试授权链接:调用设置授权配置接口,构造测试授权链接进行测试授权

安装测试

在【应用详情】页面,点击【安装测试】,确保指令回调和数据回调均已通过验证。

 

添加企业安装

在【安装测试】中点击【添加企业安装测试】。

安装测试之前,请先确保当前测试已经加入测试企业列表中。

 在【测试安装】确认页面,点击【确认】。

 

管理员授权

使用测试企业的管理员企业微信,扫码【管理员授权】。

确认【可见范围】、【授权应用权限】等安装信息。

接收临时授权码

预授权码用于企业授权时的第三方服务商安全验证。

需要通过授权成功后指令回调POST解析获取临时授权码。

回调内容

可以看到InfoType类型为create_auth。

接下来就是将解析得到的临时授权码请求永久授权码和授权企业信息。

企业永久授权码

该API用于使用临时授权码换取授权方的永久授权码,

并换取授权信息、企业access_token,临时授权码一次有效。

请求方式

POST

请求地址

https://qyapi.weixin.qq.com/cgi-bin/service/get_permanent_code?suite_access_token=SUITE_ACCESS_TOKEN

请求包体

{"auth_code": "auth_code_value"}

 

业务代码

还是在原来的post回调解析中处理新的类型。这里需要注意的一点是:获取到的auto_code不是一个字符串,而是一个xml对象类型;所以下方在处理时,先进行json处理后又转换为数组类型,这样就能获取其中的key 0内容。

代码如下:

/*** 企业微信post回调解析* @param $sReqMsgSig* @param $sReqTimeStamp* @param $sReqNonce* @param $sReqData* @return string*/
public function callbackPOST($sReqMsgSig, $sReqTimeStamp, $sReqNonce, $sReqData)
{$sMsg = "";  // 解析之后的明文$wxcpt = new \WXBizMsgCrypt(self::$token, self::$encodingAesKey, self::$SuiteID);$errCode = $wxcpt->DecryptMsg($sReqMsgSig, $sReqTimeStamp, $sReqNonce, $sReqData, $sMsg);if ($errCode == 0) {// 解密成功,sMsg即为xml格式的明文writeRecordLog('companyWechat.log', "解密成功:\r\n" . var_export($sMsg, true));// TODO: 对明文的处理// 解析该xml字符串,利用simpleXMLlibxml_disable_entity_loader(true);//禁止xml实体解析,防止xml注入$xml = simplexml_load_string($sMsg, 'SimpleXMLElement', LIBXML_NOCDATA);switch ($xml->InfoType) {case 'suite_ticket': // 存储suite_ticket$log_desc = '存储suite_ticket:' . $xml->SuiteTicket;self::$redisWechat->setCompanyTicket($xml->SuiteTicket);break;case 'create_auth': // 授权小程序$auth_code = djson(json($xml->AuthCode));$log_desc = '接收临时授权码:' . $auth_code[0];$log_desc .= "\r\n" . '获取永久授权码';$res = $this->getPermanentCode($auth_code[0]);$log_desc .= "\r\n" . $res;break;case 'cancel_auth': // 删除小程序$log_desc = '删除小程序,取消企业微信corpId:' . $xml->AuthCorpId;break;default:$log_desc = '未知的类型:' . $xml->InfoType;break;}writeRecordLog('companyWechat.log', '解析日志:' . $log_desc);return 'success';} else {writeRecordLog('companyWechat.log', "ERR: " . $errCode . "\r\n");return "ERR: " . $errCode . "\r\n";}
}/*** 获取企业永久授权码信息* @param $authCode* @return array|mixed|string*/
protected function getPermanentCode($authCode)
{$get_access_token = $this->companyAccessToken();$access_token = $get_access_token['data']['suite_access_token'];$url = 'https://qyapi.weixin.qq.com/cgi-bin/service/get_permanent_code?suite_access_token=' . $access_token;$params = json(['auth_code' => $authCode]);$info = $this->linkCurl($url, 'POST', $params);return $info;}

回调响应

在回调中解析并打印到日志中,可查看到获取的授权企业信息,并包含永久授权码。

参数说明

下面是回调中通过临时授权码获取的企业永久授权码接口返回参数说明,主要用到企业access_token、permanent_code和授权企业信息、授权应用信息及授权管理员信息。

参数

说明

access_token

授权方(企业)access_token,最长为512字节。代开发自建应用安装时不返回。

expires_in

授权方(企业)access_token超时时间(秒)。代开发自建应用安装时不返回。

permanent_code

企业微信永久授权码,最长为512字节

auth_corp_info

授权方企业信息

auth_corp_info.corpid

授权方企业微信id

auth_corp_info.corp_name

授权方企业名称,即企业简称

auth_corp_info.corp_type

授权方企业类型,认证号:verified, 注册号:unverified

auth_corp_info.corp_square_logo_url

授权方企业方形头像

auth_corp_info.corp_user_max

授权方企业用户规模

auth_corp_info.corp_full_name

授权方企业的主体名称(仅认证或验证过的企业有),即企业全称。企业微信将逐步回收该字段,后续实际返回内容为企业名称,即auth_corp_info.corp_name。

auth_corp_info.subject_type

企业类型,1. 企业; 2. 政府以及事业单位; 3. 其他组织, 4.团队号

auth_corp_info.verified_end_time

认证到期时间

auth_corp_info.corp_wxqrcode

授权企业在微信插件(原企业号)的二维码,可用于关注微信插件

auth_corp_info.corp_scale

企业规模。当企业未设置该属性时,值为空

auth_corp_info.corp_industry

企业所属行业。当企业未设置该属性时,值为空

auth_corp_info.corp_sub_industry

企业所属子行业。当企业未设置该属性时,值为空

auth_info

授权信息。如果是通讯录应用,且没开启实体应用,是没有该项的。通讯录应用拥有企业通讯录的全部信息读写权限

auth_info.agent

授权的应用信息,注意是一个数组,但仅旧的多应用套件授权时会返回多个agent,对新的单应用授权,永远只返回一个agent

auth_info.agent.agentid

授权方应用id

auth_info.agent.name

授权方应用名字

auth_info.agent.square_logo_url

授权方应用方形头像

auth_info.agent.round_logo_url

授权方应用圆形头像

auth_info.agent.appid

旧的多应用套件中的对应应用id,新开发者请忽略

auth_info.agent.auth_mode

授权模式,0为管理员授权;1为成员授权

auth_info.agent.is_customized_app

是否为代开发自建应用

auth_info.agent.auth_from_thirdapp

来自第三方应用接口唤起,仅通过第三方应用添加自建应用 获取授权链接授权代开发自建应用时,才返回该字段

auth_info.agent.privilege

应用对应的权限

auth_info.agent.privilege.allow_party

应用可见范围(部门)

auth_info.agent.privilege.allow_tag

应用可见范围(标签)

auth_info.agent.privilege.allow_user

应用可见范围(成员)

auth_info.agent.privilege.extra_party

额外通讯录(部门)

auth_info.agent.privilege.extra_user

额外通讯录(成员)

auth_info.agent.privilege.extra_tag

额外通讯录(标签)

auth_info.agent.privilege.level

权限等级。
1:通讯录基本信息只读
2:通讯录全部信息只读
3:通讯录全部信息读写
4:单个基本信息只读
5:通讯录全部信息只写

auth_info.agent.shared_from

共享了应用的企业信息,仅当由企业互联或者上下游共享应用触发的安装时才返回

auth_info.agent.shared_from.corpid

共享了应用的企业信息,仅当企业互联或者上下游共享应用触发的安装时才返回

auth_info.agent.shared_from.share_type

共享了途径,0表示企业互联,1表示上下游

auth_user_info

授权管理员的信息,可能不返回

auth_user_info.userid

授权管理员的userid,可能为空

auth_user_info.open_userid

授权管理员的open_userid,可能为空

auth_user_info.name

授权管理员的name,可能为空

auth_user_info.avatar

授权管理员的头像url,可能为空

接下来就是把永久授权码和企业授权id或者其他能用上的信息保存起来;

这里就不在详说,可根据具体业务实现。

总结

本篇将介绍如何将应用安装到企业工作台,其中包含添加测试企业、安装测试应用及获取企业授权信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/200578.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

4.Gin HTML 模板渲染

4.Gin HTML 模板渲染 Gin HTML 模板渲染 1. 全部模板放在一个目录里面的配置方法 创建用于渲染的模板html templates/index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> …

【云原生-Kurbernetes篇】HPA 与 Rancher管理工具

文章目录 一、Pod的自动伸缩1.1 HPA1.1.1 简介1.1.2 HPA的实现原理1.1.3 相关命令 1.2 VPA1.2.1 简介1.2.2 VPA的组件1.2.3 VPA工作原理 1.3 metrics-server简介 二、 HPA的部署与测试2.1 部署metrics-serverStep1 编写metrics-server的配置清单文件Step2 部署Step3 测试kubect…

数学几百年重大错误:将两异函数误为同一函数

黄小宁 因各实数都可是数轴上点的坐标所以数集A可形象化为数轴上的点集A&#xff0c;从而使x∈R变换为实数yxδ的几何意义可是&#xff1a;一维空间“管道”g内R轴上的质点x∈R(x是点的坐标)运动到新的位置yxδ还在管道g内&#xff08;设各点只作位置改变而没别的改变即变位前…

『亚马逊云科技产品测评』活动征文|搭建Squoosh图片在线压缩工具

搭建Squoosh图片在线压缩工具 前言一、Squoosh是什么&#xff1f;二、准备一台Lightsail实例1.进入控制台2.创建实例3.开放端口4.部署Squoosh5.预览 三、搭建反向代理1. 安装宝塔2. 配置反向代理3. 预览代理效果 提示&#xff1a;授权声明&#xff1a;本篇文章授权活动官方亚马…

2021秋招-总目录

2021秋招-目录 知识点总结 预训练语言模型: Bert家族 1.1 BERT、attention、transformer理解部分 B站讲解–强烈推荐可视化推倒结合代码理解代码部分常见面试考点以及问题: word2vec 、 fasttext 、elmo;BN 、LN、CN、WNNLP中的loss与评价总结 4.1 loss_function&#xff1…

linux rsyslog综合实战2

本次我们通过rsyslog服务将A节点服务器上的两个(E.g:多个日志也可以)日志(Path:/var/log/245-1.log、245-2.log)实时同步到B节点服务器目录下(Path:/opt/rsyslog/245) 1.rsyslog架构 2.环境信息 环境信息 HostnameIpAddressOS versionModuleNotersyslog1192.168.10.245CentOS…

激发创新,助力研究:CogVLM,强大且开源的视觉语言模型亮相

项目设计集合&#xff08;人工智能方向&#xff09;&#xff1a;助力新人快速实战掌握技能、自主完成项目设计升级&#xff0c;提升自身的硬实力&#xff08;不仅限NLP、知识图谱、计算机视觉等领域&#xff09;&#xff1a;汇总有意义的项目设计集合&#xff0c;助力新人快速实…

SPASS-指数平滑法

基本概念及统计原理 基本概念 指数平滑法的思想来源于对移动平均预测法的改进。指数平滑法的思想是以无穷大为宽度&#xff0c;各历史值的权重随时间的推移呈指数衰减&#xff0c;这样就解决了移动平均的两个难题。 统计原理 简单模型 Holt线性趋势模型 案例 为了研究上海市…

HarmonyOS ArkTS List组件和Grid组件的使用(五)

简介 ArkUI提供了List组件和Grid组件&#xff0c;开发者使用List和Grid组件能够很轻松的完成一些列表页面。常见的列表有线性列表&#xff08;List列表&#xff09;和网格布局&#xff08;Grid列表&#xff09;&#xff1a; List组件的使用 List是很常用的滚动类容器组件&…

Ghidra逆向工具配置 MacOS 的启动台显示(Python)

写在前面 通过 ghidra 工具, 但是只能用命令行启动, 不太舒服, 写个脚本生成 MacOS 的 app 格式并导入启动台. 不算复杂, 主要是解析包的一些元信息还有裁剪软件图标(通过 MacOS 自带的 API) 脚本 #!/opt/homebrew/bin/python3import os import re import subprocess as sp…

易航网址引导系统 v1.9 源码:去除弹窗功能的易航网址引导页管理系统

易航自主开发了一款极其优雅的易航网址引导页管理系统&#xff0c;后台采用全新的光年 v5 模板开发。该系统完全开源&#xff0c;摒弃了后门风险&#xff0c;可以管理无数个引导页主题。数据管理采用易航原创的JsonDb数据包&#xff0c;无需复杂的安装解压过程即可使用。目前系…

Cache学习(1):常见的程序运行模型多级Cache存储结构

0 背景&#xff1a;常见的程序运行模型&#xff08;为什么要Cache&#xff09; 主存&#xff1a;Main Memory&#xff0c;硬件实现为RAM&#xff0c;产品形态&#xff1a;DDR&#xff08;例如&#xff1a; DDR3、DDR4等&#xff09;磁盘设备&#xff1a;Flash Memory&#xff…

计算机毕业设计选题推荐-个人健康微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

Flutter笔记:拖拽手势

Flutter笔记 拖拽手势 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/article/details/134485123 目 录 1. 概述2. 垂直拖…

设计模式-访问者模式-笔记

Visitor模式 动机&#xff08;Morivation&#xff09; 在软件构建过程中&#xff0c;由于需求的变化&#xff0c;某些类层次结构中常常需要增加新的行为&#xff08;方法&#xff09;&#xff0c;如果直接在基类中做这样的更改&#xff0c;将会给子类带来很繁重的变更负担&am…

【算法】二分查找-20231122

这里写目录标题 一、1089. 复写零二、917. 仅仅反转字母三、88. 合并两个有序数组四、283. 移动零 一、1089. 复写零 提示 简单 266 相关企业 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&a…

spark内置数据类型

在用scala编写spark的时候&#xff0c;假如我现在需要将我spark读的数据源的字段&#xff0c;做一个类型转换&#xff0c;因 为需求中要拼接出sql的create table语句&#xff0c;需要每个字段的sql中的类型&#xff0c;那么就需要去和sparksql 中的内置数据类型去比对。 写s…

gitlab图形化界面使用

gitlab使用 创建用户 上面是创建用户基本操作 修改密码 创建组 给组添加用户 创建项目 选择空白项目 退出root用户&#xff0c;切换其他用户 在服务器上创建ssh密钥 使用ssh-ketgen 命令 新服务器上创建的 [rootgitlab ~]# ssh-keygen Generating public/private rsa key …

自然语言处理:Transformer与GPT

Transformer和GPT&#xff08;Generative Pre-trained Transformer&#xff09;是深度学习和自然语言处理&#xff08;NLP&#xff09;领域的两个重要概念&#xff0c;它们之间存在密切的关系但也有明显的不同。 1 基本概念 1.1 Transformer基本概念 Transformer是一种深度学…

【数据结构(三)】单向环形链表和约瑟夫问题(3)

文章目录 1. 单向环形链表应用场景2. 思路分析3. 代码实现3.1. 实现单向环形链表3.2. 产生出队编号序列3.2.1. 思路分析3.2.2. 代码实现 1. 单向环形链表应用场景 Josephu(约瑟夫、约瑟夫环) 问题&#xff1a; 设编号为 1&#xff0c;2&#xff0c;… n 的 n 个人围坐一圈&…