Android(安卓) 接入企业微信

安卓接入企业微信

概述:博主是个三流代码搬运工,最近接手某个课题,需要做一个数据可视化的 app ,将一些信息直观的统计并且展示在地图上,所以也会用到高德地图 API 的接口,所以后续也会分享一下使用高德 API 遇到的一些问题。有技术的看个热闹,没技术的窥个门道,权当增加业余知识~~

准备工作

既然要接入企业微信,必要的企业 微信管理员账号 还是要有的!

首先建一个类保存一下登陆时可能需要用到的各种 key ,具体看图片中每个 key 所对应的值;

QYWXConstants.class

public class QYWXConstants {//企业idpublic final static String CORPID = "***";//应用IDpublic final static String AGENT_ID = "***";//应用密钥public final static String SECRET = "***";//应用schemapublic final static String SCHEMA = "***";//签名的keypublic final static String APP_ALIAS = "android";//包名public final static String APP_PACKAGE_NAME = "com.example.testapplication";//通讯录secretpublic final static String MOBILE_LIST_SECRET = "***";//后台请求链接前缀public final static String ADMIN_LINK = "https://qyapi.weixin.qq.com/cgi-bin/";//企业对外名称public static final String CORP_NAME = "***";
}

corpid:

mark

agentid & secret:

mark

mark

schema:

mark

mark

请注意,这里的应用签名为上图格式,可通过 gradle 生成后查看。

mark

去除 md5 中间的 :号,我试了好多次发现这样才能调出授权页,巨坑!!!

同时,在 appbuild.gradle 填加以下配置:

signingConfigs {release {storeFile file('C:/Users/lonuslan/Desktop/debug.jks')storePassword '***'keyAlias '***'keyPassword '***'}}buildTypes {debug {signingConfig signingConfigs.release}release {signingConfig signingConfigs.releaseminifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}

签名文件的 storePassword, keyAlias , keyPassword 自定义;

然后添加企业微信的 sdk jar 包到项目中:

在根目录新建 libs 文件夹, 添加 sdk , 右击 jar 包 , add as a library. 由于官方给出的是解压包,要导入项目只能以模块导入。解压包中不包含jar包,只有在官方的演示代码中才包含jar包,这里贴出 jar 包的下载链接,有需要的使用。 qiwxsdkapi.jar

之后就可以按照官方文档愉快的进行开发了!!!

这里给以下示例代码,具体自己看官方文档,自己动手,丰衣足食,发扬中华名族传统美德从我做起!

public class LoginActivity extends AppCompatActivity implements View.OnClickListener {private volatile static LoginActivity instance = null;private static final String TAG = "LoginActivity";private IWWAPI iwwapi;private WWAuthMessage.Resp resp;//    private Toast mToast;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);registerApp();//TODO 这里写你的逻辑登录代码,调用welogin()...}public void wxLogin() {Log.i(TAG, "wxLogin...begin...");final WWAuthMessage.Req req = new WWAuthMessage.Req();req.sch = QYWXConstants.SCHEMA;req.agentId = QYWXConstants.AGENT_ID;req.appId = QYWXConstants.CORPID;req.state = "wwapitest";iwwapi.sendMessage(req, new IWWAPIEventHandler() {@Overridepublic void handleResp(BaseMessage resp) {if (resp instanceof WWAuthMessage.Resp) {WWAuthMessage.Resp rsp = (WWAuthMessage.Resp) resp;if (rsp.errCode == WWAuthMessage.ERR_CANCEL) {Log.i(TAG, "登陆取消");Toast.makeText(LoginActivity.this, "登录取消", Toast.LENGTH_SHORT).show();} else if (rsp.errCode == WWAuthMessage.ERR_FAIL) {Log.i(TAG, "登陆失败");Toast.makeText(LoginActivity.this, "登陆失败", Toast.LENGTH_SHORT).show();} else if (rsp.errCode == WWAuthMessage.ERR_OK) {String loginCode= rsp.code;
//                        ToastUtil.showShort(LoginActivity.this, loginCode);//安卓中的网络请求必须写在子线程中,不能直接暴露在activity中Intent intent = new Intent();String accessToken = QywxUtil.getAccessToken(QYWXConstants.CORPID, QYWXConstants.SECRET);String userId = QywxUtil.getUserId(accessToken, loginCode);User user = QywxUtil.getUser(accessToken, userId);intent.putExtra("user", user);intent.setClass(LoginActivity.this, MainTabActivity.class);ToastUtil.showShort(LoginActivity.this, "登陆成功");startActivity(intent);//TODO 获取用户的组织信息,判断其字段中是否包含“” ,有则跳转,无则限制登录
//                        String externalCorpName = user.getExternalProfile().getExternalCorpName();
//                        if (QYWXConstants.CORP_NAME.equals(externalCorpName)){
//                            intent.putExtra("user", user);
//                            ToastUtil.showShort(LoginActivity.this, "登陆成功");
//                            startActivity(intent);
//                        }else {
//                            ToastUtil.showShort(LoginActivity.this, "对不起,您没有该权限,请联系管理员");
//                        }}}}});}public void registerApp() {iwwapi = WWAPIFactory.createWWAPI(LoginActivity.this);iwwapi.registerApp(QYWXConstants.SCHEMA);Log.i(TAG, "register...");}}

有问题请在我的私人博客: https://www.lonuslan.com/articles/2020/06/23/1592905144300.html 留言,看到了秒回,哈哈哈!

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

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

相关文章

企业微信接入第三方应用(以服务商身份)

最近在搞企业微信的东西,刚开始对这个的确没有任何的概念,属于两眼抓瞎的类型,因为场景比较特殊网上搜到的资料也不多,只能自己看着官方文档一点一点去调试。于是,一系列的踩坑之路就上演了,这里就简单介绍…

从码力到算力的“狂飙”,探元宇宙的未来风向

导语 | 随着 GPT-4 的问世,大大加速催化了 AIGC 与元宇宙的融合发展,在大家对元宇宙的了解逐渐深入之后,越来越多企业不断探索元宇宙的发展机遇。那么在技术驱动的数字时代,我们该如何看待元宇宙的未来发展?今天&#…

chatgpt赋能python:Python怎么更改语言

Python怎么更改语言 Python是一种高级编程语言,因其简洁、易读、易学和可扩展性而受到许多程序员的青睐。 Python在许多领域中都有着广泛的应用,特别是在数据科学领域和人工智能领域。 本文将探讨如何使用Python更改语言,介绍一些工具和技巧…

ClickHouse用户路径分析原理及实现

在互联网数据分析钟,有一种针对用户行为路径的分析模型——路径分析。路径分析应用是对特定事件的上下游进行可视化展示并分析用户在使用产品时的路径分布情况。比如:当用户使用某APP时,是怎样从【首页】进入【详情页】的,用户从【…

【GIT】git个人笔记

GIT个人手册 版本 日期 修订内容 作者 V01 2019-06-25 初稿 备注: 使用中不断迭代完善,其他人使用中有其他总结的,可以补充。 目录 第一章 说明 一.1.1 GIT 中文手册 一.1.2 git仓库说明(工作区、暂存区、本地仓、远程仓)1 一.1.3 g…

ES优化实战- forceMerge搜索提升测试报告

测试结论 通过测试数据能够得出以下结论。 对于历史不变的数据,段合并的效果是非常好的。它对普通查询(query_string)有着较大的提升,提升在10%~90%不等的效果,其中搜索条件命中的结果集越多,提升就越明显…

unity对接T.Flight Hotas 4操控杆

unity对接T.Flight Hotas 4操控杆: 注: 提示: 本篇主要说明,如何使用unity获取 T.Flight Hotas 4 传回来的各种值 获取驱动: 提示:首先要下载安装官方的驱动,用他的软件先检测一边是否能够正常运行 地址: 固件地址:https://support.thrustmaster.com/zh/product…

ES优化实战 - 小操作节省百分之三十以上的磁盘空间

通过关闭索引的 _source来节省磁盘 un_source 是去掉存储的数据。在查询的时候,不反回数据。数据只做索引和倒排这些。 这样做的意思是,只让es做检索,不做存储。es检索完,只返回一个id。然后选用Hbase这样的数据库联动。Hbase擅长…

ES 搜索优化测试 - indexSort 对检索性能提升50%

indexSort 是在写入数据的时候,根据某个字段做排序。我们可以理解为数据的预排序。 在检索的时候,假如搜索正好是根据排好序的字段做排序的,那么将会有 50%的 检索性能提升效果。 注意,不要在请求中返回 count数据总量。这样配合i…

unity中的摇杆按钮设置

摇杆设备的所有按钮都有顺序编号,下图按钮框内的1到16分别对应摇杆设备的各个按钮。 若要使用摇杆的某个按钮需按 joystick button 按钮编号 的格式设置。unity的按钮从0开始计算在设置的时候需要减去一个数。 下图红线框住的选项其设置表示:摇杆7号按钮…

【转】浅谈协方差

【转】浅谈协方差 觉得有用的话,欢迎一起讨论相互学习~ 转载自:http://pinkyjie.com/2010/08/31/covariance/ 作者:进击的马斯特 协方差矩阵 Matlab协方差矩阵

IT 常用词汇(一)

1, amend [əmend] vt. 修改;改善,改进 vi. 改正,改善;改过自新 n. (Amend)人名;(德、英)阿门德 2, bearer [bɛrɚ] n. 持票人;[建] 承木;[机] 托架;送信人;搬运工人 …

浅谈协方差矩阵(马斯特的斯马特生活)

统计学的基本概念 学过概率统计的孩子都知道,统计里最基本的概念就是样本的均值,方差,或者再加个标准差。首先我们给你一个含有n个样本的集合,依次给出这些概念的公式描述,这些高中学过数学的孩子都应该知道吧&#x…

Thrustmaster(图马思特) HOTAS Warthog 疣猪杆 读取按钮数据

我所使用的摇杆是THRUSTMASTER(右下图所示),用于在目标追踪页面进行框选物体(实际应用场景不涉及鼠标键盘,只能使用操作杆进行操作) 1、首先,安装摇杆所需环境,winR输入cmd后&#x…

速魔与图马思特优缺点对比

速魔和图马思特优缺点对比速魔图马思特传动系统直驱双皮带最大力反馈10Nm10Nm工作电压110-240V220-240V功率360W240W快拆50mm/70mm 盘面通用特制优点1.直驱,没有传动装置 2.力反馈更加直接 3.回盘速度更快,输出力度更大,操控好 4.秒换方向盘 …

微软获GPT-3独家授权,OpenAI创始人马斯克:与初衷相悖

萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 微软获OpenAI GPT-3独家授权,马斯克不高兴了。 就在微软官宣GPT-3后一天,马斯克在社交媒体上吐槽此事:“这看起来像是与‘开放’相悖。OpenAI本质上已经被微软‘控制’了。” 这件事情的起因&…

张俊林:GPT-4 模型会开创哪些新的研究方向?

作者|张俊林知乎 整理|蘑菇先生学习记 分享一篇张俊林老师关于GPT-4模型会开创哪些新的研究方向的回答。 引言 在这个历史性的时刻,回答个问题,留下自己作为历史见证人的足迹。先遵循这个问题的主旨,写两句GPT-4开创了…

OpenAI 发布 GPT-4,有哪些技术上的优化或突破?

作者:张俊林 在这个历史性的时刻,回答个问题,留下自己作为历史见证人的足迹。GPT4的技术报告里很明确地指出了三个新的方向: 第一,LLM最前沿研究的封闭化或小圈子化。 技术报告里说了,出于竞争以及安全等方…

海康威视人证对比设备SDK-C#

SDk下载地址:https://www.hikvision.com/cn/download_more_570.html 本文应用场景:第一次进行人脸身份证的验证方式,之后刷脸即可得到这个用户的信息 调用的SDK为布防门禁事件,以下为流程图和说明 报警回调事件 实际使用&#x…

java调用海康威视人脸识别抓拍

**1.**首先下载官网的sdk开发包,引入HCNetSDK.java,里面定义了很多调用的能力集。 **2.**通过报警回调函数中的黑名单报警这个接口去实现人脸抓拍的。 3.简单来说就是写个类去实现HCNetSDK.FMSGCallBack 然后根据条件函数 case HCNetSDK.COMM_SNAP_MATCH…