- 浏览: 188188 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (228)
- 链接数据库 (1)
- Linux下面安装tomcat步骤 (1)
- 数据库简单添加索引 (1)
- Ubuntu 16.04安装jdk步骤 (1)
- Ubuntu 16.04安装mysql链接工具workbench (1)
- Java基础 (1)
- Java 获取两个时间的时间查 如 1 天 2 小时 30 分钟 (1)
- jdbc链接增删该查 (1)
- springboot 跨域解决 (1)
- springboot如何读取配置文件(application.yml)中的属性值 (1)
- springboot配置redis (1)
- 数据库访问优化法则 (1)
- springboot 配置定时任务 (1)
- 使用Spring Boot上传文件 (1)
- Java并发编程:Callable、Future和FutureTask (1)
- springboot配置所有信息demo (1)
- 常用软件地址 (1)
- Java DateUtil时间大全 (1)
- Java DateUtil当天,本周,本月时间获取方法 (1)
- @Data的用法 (1)
- 身份证工具类 (1)
- springboot添加日志 (1)
- List集合中的对象按照某个字段去重实现 (1)
- JavaBean和Map转换封装类 (1)
- StringUtils工具类用法 (1)
- BigDecimal用户详情 (1)
- java常用集合总结 (1)
- openfile 插件开发步骤 (0)
- Linux rpc客户端步骤 (1)
- Java开发必会的Linux命令 (1)
- springboot配置拦截器,控制登录跳转 (1)
- springboot 异步调用的方法 (0)
- springboot如何读取配置文件test.properties (1)
- springboot 异步调用的方法 (1)
- HttpClient操作,HttpPost (1)
- HttpGet (1)
- HttpDelete (1)
- HttpPut (1)
- mybatis生成代码后,想用自己的关联查询demo (1)
- Arrays工具类十大常用方法 (1)
- 如何生成唯一订单号 (1)
- 订单号唯一性 (1)
- msyql lest的用法 (1)
- //循环递归删除 (0)
- 循环递归删除 (1)
- java 属性首字母大写返回json解决办法 (1)
- 根据两点间经纬度坐标(double值),计算两点间距离,单位为米 (1)
- 运用开发好的jar部署到linux服务中 (1)
- mybatis批量新增 (1)
- mybatis 增删该查demo,新手必看 (1)
- java中字符串查找一个字符串的个数几种方法 (1)
- @Select in 的用法 (1)
- Ubuntu 16.04使用ieda简单配置 (1)
- 统计一个字符串中相应字符出现的次数 (1)
- SimpleDateFormat同步的解决办法 (1)
- gradle打包springboot jar例子 (1)
- java 提取字符串中的数字 (1)
- springboot 对像异常处理,还可以作为全部异常处理 (1)
- 面试题 (0)
- Linux下面安装virtualBox (1)
- java带有效期的map (1)
- 2018年JAVA基础面试题和高级面试题总结 (1)
- mysql修改密码的方法 (1)
- 排名前 16 的 Java 工具类 (1)
- 最完整的Linux常用命令大全 (1)
- Mysql 开发标准规范 (1)
- idea 快捷键 (1)
- mysql 建立索引 (1)
- Java中判断字符串是否为数字的五种方法 (1)
- springboot集成redis (1)
- springboot异步调用demo (1)
- springboot2集成redis (1)
- springboot2集成Elasticsearch (1)
- java过滤敏感字体的方式 (1)
- 对象的值赋给另一个对象 (1)
- mybitse+pagehelper 的使用方法 (1)
- java时间的处理 (1)
- xshell5 下载地址 (1)
- springboot2集成Excel (1)
- 检查数组是否包含某个值的方法 (1)
- 关于Java代码优化的N条建议! (1)
- Java Map按Key值进行排序 (1)
- List进行排序 (1)
- Stream 完整实例 (1)
- StringUtils isNoneBlank和isAnyBlank——demo (1)
- vim最全常用命令 (1)
- JWT生成Token (1)
- 学习参看地址 (1)
- java初始化数据 (1)
- 简单json (1)
- 数据库脚本 (1)
- restTemplate http请求 (1)
- 学习网站 (1)
- JsonUtil (1)
- Rsa (1)
- BeanUtils的赋值方法比较 (1)
- HttpClientUtil (2)
- ValidUtils (0)
- 读取excel,批量插入库demo (1)
- springboot对redis封装使用 (1)
- java后端简答验证码 (1)
- java高级面试题及其答案 (1)
- 序列换成json时 (1)
- 将所有的long变成string (1)
- ControllerAdvice (0)
- RedisService 工具类 (1)
- Java常用正则表达式验证工具类RegexUtils (1)
- CollectionUtil (1)
- thrift使用 (1)
- springboot播客学习 (1)
- mybitse 批量更新 (1)
- https://www.cnblogs.com/cxiaocai/p/11715874.html (1)
- elasticsearch安装及其head步骤 (0)
- elasticsearch7.6.2安装及其head、kibana、ik分词器步骤 (0)
- elasticsearch7.6.2集成springboot (0)
- gradle仓库选址 (1)
- elasticsearch7.6.2集成springboot2.2.6---2 (1)
- elasticsearch7.6.2安装及其head、kibana、ik分词器步骤-----1 (1)
- elasticsearch7.6.2集成springboot2.2.6基本语法---3 (1)
- Jsoup (1)
- elasticsearch7.6.2集成springboot2.2.6----demo (1)
- mybatis官网地址 (1)
- springboot发送邮件到qq (1)
- navicat Premium 链接sql Server的方法 (1)
- 简单开发springboot搭建 (1)
- sqlServer 查询两个小时的sql语句 (1)
- BigDecimalUtil (1)
- 雪花算法生成id (1)
- JsonUtils (1)
- Spring Boot监控与管理的实现 (1)
- springboot 使用undertow启动,替换tomcat (1)
- RedisConfig配置使用 (1)
- RedisUtil (1)
- easypoi读取excel (1)
- easyexcel读取excel (0)
- easyexcel读取excel与下载 (1)
- 生成指定长度的随机数 (1)
- Spring Boot AOP实战 (1)
- fastjsonfastjson新手必看 (1)
- 获取IP地址 (1)
- CommonUtils (1)
- 5万字长文:Stream和Lambda表达式最佳实践-附PDF下载 (1)
- DateUtils 最新工具类 (1)
- screw的使用 (1)
- 15000 字的 SQL 语句大全 (1)
- hutool (1)
- PdfToWord (1)
- MySQL修改最大连接数 (1)
- MAP排序 (1)
- 归纳从文件中读取数据的六种方法-JAVA IO基础总结 (1)
- 天气 (1)
- Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案 (1)
- 全网最全编程学习网站汇总来了,还不赶快收藏 (1)
- win10 (0)
- 电脑知识 (0)
- util工具类 (1)
- ieda提示mapper报错 (1)
- zysnba (1)
- 自增方式 (1)
- mybits链表查询 (1)
- SpringBoot如何优雅的处理校验参数 (1)
- 参考记录 (1)
- 企业微信封装方法 (1)
- 二维码 (1)
- mysql简单创建索引 (1)
- msyql函数 (1)
- mybitse-plus多表查询demo (1)
- git 提交本地代码步骤 (1)
- gradle5.X以上lombok引入 (1)
- SpringBoot定时任务及Cron表达式详解 (1)
- Hutool工具集之DateUtil(日期时间工具)详解使用 (1)
- 对象属性为空字符串变成null (1)
- DateUtils 工具类 (0)
- face++照片不对工具类 (1)
- 判断某个值是否在list集合中的某个对象中存在 (1)
- mybatisplus时间更新操作 (1)
- Java8 List通用方法处理总结 (1)
- 阿斯蒂芬 (0)
- springboot多数据源配置 (0)
- MyBatis和MyBatis-Plus 官网地址 (1)
- jwt (0)
- java---ValidUtils (1)
- Java之下载网络图片到本地文件夹 (1)
- 初始化内容数据 (1)
- springboot启动指定端口和启动环境 (1)
- 根据生日计算年龄 (1)
- idea快捷键大全 (1)
- springboot数据验证例子 (1)
- springboot文章 (1)
- 获取当前时间,推迟一年 (0)
- 获取当前时间,推迟一周 推迟一年示例 (1)
- ResultBean返回对象 (1)
- SpringBoot注解最全详解 (1)
- JeecgBoot (1)
- 电脑优化 (0)
- 简单数据队列 (1)
- CacheUtil换成工具类 (0)
- CacheUtil缓存工具类 (0)
- xml和对象互转 (0)
- 导出word (0)
- 企业微信通过code获取用户基本信息 (1)
- Java开发中的一些小技巧 (1)
- 判断当前时间是否在一个时间区间例如8点:21点 (1)
- springboot 启动指定环境 (1)
- 打印springboot启动的环境 (1)
- 根据时间日期获取当天是周几 (1)
- LocalDateTimeToString (1)
- java导出word (1)
- java 对xml和对象互转 (1)
- java CacheUtil缓存工具类 (1)
- 史上最牛逼电脑优化,让电脑飞起来 (1)
- isEmpty 和 isBlank 的用法区别 (1)
- 根据图片url地址获取其流InputStream (1)
- springboot解决LocalDateTime (1)
- springboot配置文件list映射 (1)
- SpringBoot中必须掌握的45个注解 (1)
- sql 优化的 15 个小技巧 (1)
- Cron表达式 (1)
- 数据库创建时间和修改时间默认值 (1)
- 小程序解析手机号 (1)
- 小程序获取手机号 (0)
- java 获取resource下面的文件路径,springboot打成jar也可以使用 (1)
- 数据库字段不显示对象和swwager前段不显示 (1)
- java生成pdf (1)
- springboot 异步调用 (1)
- java获取时间段内的每一天 (1)
- hutool----DateUtil简单的时间 (1)
- java 8两个List集合取交集、并集、差集、去重并集 (1)
- 服务调用demo (1)
- hutool导入excel (1)
- hutool导出 (1)
- 切面日志 (1)
- 校验参数为空 (1)
- 两个集合对象某一个属性相匹配 (1)
- JAVA stream流详细教程 (1)
- 查看java进程的命令 (1)
- Java 保留两位小数 百分数 (1)
- freemarker读写word模板生成word文档 (1)
- springboot项目中,读取 resources 目录下的文件的9种方式 (1)
- Knife4j (1)
- Java8 获取两个List交集 (1)
- list泛型和list对象交集 (1)
- 未来7天过生日的孩子sql (1)
- 数据校验,全局异常 (1)
- 获取最近10天过生日的sql (1)
- 随机数 (1)
- Java获取两个日期的天数打印 (1)
- 通过时间获取星期几 (1)
- Java时间类型相互转化 (2)
- 小程序登录 (1)
- 手机号 (0)
- sse调用 (0)
- httpsse调用 (1)
- 初始延迟3秒执行任务 (0)
最新评论
@GetMapping(value = "/loginByCode")
@ApiOperation(value = "企业微信根据code获取用户的基本信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "code", value = "code", dataType = "string", paramType = "query", required = true)
})
public ResultBean<UserBaseInfoVO> loginByCode(String code) {
try {
return webChatService.loginByCode(code);
} catch (Exception e) {
log.error("企业微信根据code获取用户的基本信息异常:", e);
return ResultBean.error(e.getMessage());
}
}
@Override
public ResultBean<ChatUserBaseInfoVO> loginByCode(String code) {
logger.info("企业微信用户开始登陆 code = {}", code);
//校验数据
if (StringUtils.isBlank(code)) {
return ResultBean.error("code不能为空");
}
String result = HttpUtil.get(String.format(“企业微信获取用户id接口”, getAccessToken(), code));
logger.info("从企业微信获取用户基本信息 result = {}", result);
JSONObject resultJson = JSONObject.parseObject(result);
int errcode = (int) resultJson.get("errcode");
ChatUserBaseInfoVO chatUserBaseInfoVO = null;
if (errcode == 0) {
//获取用户userId
String userId = (String) resultJson.get("UserId");
String resutUserinfo = HttpUtil.get(String.format(“获取用户的基本信息接口”, getAccessToken(), userId));
logger.info("从企业微信获取用户详情信息 result = {}", resutUserinfo);
chatUserBaseInfoVO = JSONObject.parseObject(resutUserinfo, ChatUserBaseInfoVO.class);
logger.info("从企业微信获取用户基本信息 实体转换 enterpriseUserBaseInfoBO = {}", JSONObject.toJSONString(chatUserBaseInfoVO));
}
return ResultBean.ok(chatUserBaseInfoVO);
}
/**
* 功能说明:获取AccessToken(企业号的全局唯一票据)
* 修改说明:
*
* @return 返回企业号的全局唯一票据json字符串
* @throws IOException
* @author zys
* @date 2021年07月30日 上午10:06:37
*/
public String getAccessToken() {
//先从缓存获取accessToken
String accessToken = String.valueOf(redisUtils.get(RedisKeyConstants.ACCESSTOKEN));
logger.info("获取redis缓存的accessToken = {}", accessToken);
if (StringUtils.isNotBlank(accessToken) && !StringUtils.equals("null", accessToken)) {
return accessToken;
}
Map<String, Object> param = Maps.newHashMap();
param.put("corpid", "你的企业微信");
param.put("corpsecret", "你的密钥");
logger.info("获取access_token参数 param = {}", JSONObject.toJSONString(param));
String result = HttpUtil.get(Global.ACCESSTOKENURL, param);
logger.info("获取access_token是调用企业微信API返回的结果:" + result);
JSONObject resultJson = JSONObject.parseObject(result);
int errcode = (int) resultJson.get("errcode");
if (errcode == 0) {
//获取access_token
accessToken = (String) resultJson.get("access_token");
//存放两个小时 7200
int expiresIn = (int) resultJson.get("expires_in");
redisUtils.set(RedisKeyConstants.ACCESSTOKEN, accessToken, expiresIn);
} else {
logger.info("获取企业access_token失败");
}
return accessToken;
}
@ApiOperation(value = "企业微信根据code获取用户的基本信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "code", value = "code", dataType = "string", paramType = "query", required = true)
})
public ResultBean<UserBaseInfoVO> loginByCode(String code) {
try {
return webChatService.loginByCode(code);
} catch (Exception e) {
log.error("企业微信根据code获取用户的基本信息异常:", e);
return ResultBean.error(e.getMessage());
}
}
@Override
public ResultBean<ChatUserBaseInfoVO> loginByCode(String code) {
logger.info("企业微信用户开始登陆 code = {}", code);
//校验数据
if (StringUtils.isBlank(code)) {
return ResultBean.error("code不能为空");
}
String result = HttpUtil.get(String.format(“企业微信获取用户id接口”, getAccessToken(), code));
logger.info("从企业微信获取用户基本信息 result = {}", result);
JSONObject resultJson = JSONObject.parseObject(result);
int errcode = (int) resultJson.get("errcode");
ChatUserBaseInfoVO chatUserBaseInfoVO = null;
if (errcode == 0) {
//获取用户userId
String userId = (String) resultJson.get("UserId");
String resutUserinfo = HttpUtil.get(String.format(“获取用户的基本信息接口”, getAccessToken(), userId));
logger.info("从企业微信获取用户详情信息 result = {}", resutUserinfo);
chatUserBaseInfoVO = JSONObject.parseObject(resutUserinfo, ChatUserBaseInfoVO.class);
logger.info("从企业微信获取用户基本信息 实体转换 enterpriseUserBaseInfoBO = {}", JSONObject.toJSONString(chatUserBaseInfoVO));
}
return ResultBean.ok(chatUserBaseInfoVO);
}
/**
* 功能说明:获取AccessToken(企业号的全局唯一票据)
* 修改说明:
*
* @return 返回企业号的全局唯一票据json字符串
* @throws IOException
* @author zys
* @date 2021年07月30日 上午10:06:37
*/
public String getAccessToken() {
//先从缓存获取accessToken
String accessToken = String.valueOf(redisUtils.get(RedisKeyConstants.ACCESSTOKEN));
logger.info("获取redis缓存的accessToken = {}", accessToken);
if (StringUtils.isNotBlank(accessToken) && !StringUtils.equals("null", accessToken)) {
return accessToken;
}
Map<String, Object> param = Maps.newHashMap();
param.put("corpid", "你的企业微信");
param.put("corpsecret", "你的密钥");
logger.info("获取access_token参数 param = {}", JSONObject.toJSONString(param));
String result = HttpUtil.get(Global.ACCESSTOKENURL, param);
logger.info("获取access_token是调用企业微信API返回的结果:" + result);
JSONObject resultJson = JSONObject.parseObject(result);
int errcode = (int) resultJson.get("errcode");
if (errcode == 0) {
//获取access_token
accessToken = (String) resultJson.get("access_token");
//存放两个小时 7200
int expiresIn = (int) resultJson.get("expires_in");
redisUtils.set(RedisKeyConstants.ACCESSTOKEN, accessToken, expiresIn);
} else {
logger.info("获取企业access_token失败");
}
return accessToken;
}
如果对你有帮助请给小弟打赏下,祝你成功。
![](https://www.iteye.com/upload/logo/user/1325380/a9db8646-0c5d-3daa-9cc0-eb8f5f9fe8d3.png?1631263283)
相关推荐
3、通过access_token和用户的openId获取该用户的用户信息 因为第一步必须要经过微信的登录授权,不能网页后端请求,所以先要经过用户同意,通过页面网页请求组装的微信请求链接。请求该链接, 获取code后,后端...
- 有了access_token和openid,你可以通过微信API获取用户的基本信息,如昵称、头像等。 2. **OAuth2.0实现细节**: - **授权请求**:构建请求链接,包含你的AppID、redirect_uri(回调URL)、scope(请求权限范围...
由于我们之前设置了`scope`为`snsapi_base`,只能获取到openid对应的微信用户基本信息(不包括昵称、头像等),如果需要这些信息,需在第一步设置`scope`为`snsapi_userinfo`。现在展示如何获取基本的用户信息: ``...
- 通过企微后台获取用户授权码code,并使用access_token和code获取用户信息,完成用户登录状态设置。 - 实现建议包括增加登录态缓存,减少对OAuth2的重复调用,优化用户体验。 4. JS-SDK接口实现: - 在企业微信...
拿到access_token和openid后,可以通过微信的接口获取用户的基本信息,如昵称、头像、性别等。对于企业微信,还可以获取到用户的企业信息,如部门、职位等。 3. **企业微信授权登录** 企业微信授权登录与微信网页...
5. **获取用户信息**:有了access_token和openid,可以调用企业微信API获取用户的基本信息,如昵称、头像等。需要注意的是,这部分信息可能需要用户额外授权。 6. **ASP编程基础**:在ASP环境下,使用HTTP请求库...
- 使用access_token和openid获取用户基本信息。 2. **Winform实现扫码登录**: - 在Winform界面设计中,可以添加一个PictureBox控件显示二维码图片,一个Label用于提示用户操作,以及一个Button用于触发扫码流程...
在微信API中,OAuth2.0主要用于获取用户的微信基本信息,如昵称、头像等。使用OAuth2.0,开发者无需获取用户的微信账号密码,而是通过授权流程引导用户同意,从而获取一个Access Token,这个Token可以用来请求微信...
4. **获取用户信息**:有了访问令牌,第三方应用可以调用企业微信的API获取用户的基本信息,如openid,进而实现用户登录。 5. **刷新令牌**:访问令牌有有效期,过期后需要使用刷新令牌来获取新的访问令牌。刷新...
- 获取到授权码后,前端将code传递给后端,后端通过调用企业微信API获取access_token并进一步获取用户信息。 #### 四、实现过程详解 1. **构造授权连接** - 构造授权连接时,需要注意以下参数: - `appid`:...
- 使用获取到的Access Token,应用可以向企业微信API发送请求,获取用户的基本信息,如openid、昵称、头像等。注意,这一步需要在获取到的Access Token有效期内完成,因为Access Token有其生命周期,过期后需使用...
.NET Core 企业微信网页授权登录 .NET Core 企业微信网页授权登录是指使用微信企业号的 OAuth2 授权机制来实现网页登录的功能。在这个过程中,需要获取企业的唯一标识 corpid 和访问密钥 secret,然后使用这两个...
1.5 获取企业号应用的基本信息,包括头像、昵称、帐号类型、认证类型、可见范围等信息,管理组须拥有指定应用的发消息权限。 1.6 生成企业获取Code URL 1.7 获取授权用户信息 1.8 获取调用JSAPI接口的临时票证 2、...
在用户同意授权后,应用可以获取到code,通过code换取access_token和openid,从而识别用户身份并进行后续操作,如获取用户基本信息。 5. **媒体文件的上传下载**:微信企业号支持上传图片、语音、视频等媒体文件,...
微信企业号二次验证接口是微信为企业用户提供的一个增强安全性的功能,它允许企业在用户完成基本认证后,通过自定义的验证流程进一步确认用户身份。在本案例中,我们讨论的是如何使用PHP语言来实现这个接口。 首先...
在微信企业号中,OAuth2.0用于网页端的用户授权,用户在微信内点击授权后,可以跳转回企业号的指定页面并携带code,开发者通过code换取openid和access_token,从而实现用户的登录或权限验证。 5. **媒体文件的上传...
5. **获取用户信息**:如果在步骤2中选择了snsapi_userinfo,我们还可以进一步获取用户的基本信息,如昵称、头像等。这需要再次向微信服务器发起请求,携带Access Token和OpenID。 6. **用户登录与验证**:在后端,...
获得Access Token后,你可以调用微信的用户信息接口,获取用户的微信昵称、头像等基本信息。这些信息可以用来创建或更新用户账户,完成登录流程。 在C#中,你可能需要使用异步编程来处理网络请求,避免阻塞UI线程。...
在微信企业号中,OAuth2主要用于获取用户在企业号内的权限,例如获取用户基本信息、授权进行特定操作等。本文将深入探讨两种使用SpringMVC实现微信企业号OAuth2验证接口的方法。 一、注解方式实现OAuth2验证 1. ...
4. 获取用户信息:有了Access Token和openid,开发者可以进一步请求微信服务器获取用户的基本信息,如昵称、头像等。 三、实际应用 在实际的开发过程中,微信OAuth2.0通常用于实现以下功能: - 第三方登录:用户...