微信小程序通过CODE换取session_key和openid
微信小程序的用户信息获取需要请求微信的服务器,通过小程序提供的API在小程序端获取CODE,然后将CODE传入到我们自己的服务器,用我们的服务器来换取session_key和openid。
小程序端比较简单,从教程的API部分把代码拷贝到小程序里就好了,这里将提供一个javaweb服务器端换取session_key和openid的代码示例
@Value("${weixin.app_id}") // spring配置文件配置了appID
private String appId;
@Value("${weixin.app_secret}") // spring配置文件配置了secret
private String secret;
@RequestMapping("/openId")
@ResponseBody
public Map<String, Object> openId(String code){ // 小程序端获取的CODE
Map<String, Object> result = new HashMap<>();
result.put("code", 0);
try {
boolean check = (StringUtils.isEmpty(code)) ? true : false;
if (check) {
throw new Exception("参数异常");
}
StringBuilder urlPath = new StringBuilder("https://api.weixin.qq.com/sns/jscode2session"); // 微信提供的API,这里最好也放在配置文件
urlPath.append(String.format("?appid=%s", appId));
urlPath.append(String.format("&secret=%s", secret));
urlPath.append(String.format("&js_code=%s", code));
urlPath.append(String.format("&grant_type=%s", "authorization_code")); // 固定值
String data = HttpUtils.sendHttpRequestPOST(urlPath.toString(), "utf-8", "POST"); // java的网络请求,这里是我自己封装的一个工具包,返回字符串
System.out.println("请求结果:" + data);
String openId = new JSONObject(data).getString("openid");
System.out.println("获得openId: " + openId);
result.put("openId", openId);
} catch (Exception e) {
result.put("code", 1);
result.put("remark", e.getMessage());
e.printStackTrace();
}
return result;
}
请求以上这个控制器将返回openId,注意data中还有session_key也可以从这里取出来使用,至于JSON的处理方式,根据自己项目中的jar包更改代码即可。
微信小程序通过CODE换取session_key和openid的更多相关文章
- 微信小程序登录流程及解析用户openid session_key,获取用户信息
为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持.从2018年4月30日开始,小程序与小游戏的体验版.开发版调用 wx.getUserInfo 接口,将无 ...
- 用Spingboot获得微信小程序的Code以及openid和sessionkey
这篇文章主要写的是怎么用spingboot来获取微信小程序的Code以及openid和sessionke,我觉得已经很详细了 我们要获得openid和sessionkey,就必须先要获得code, ...
- nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId
nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId 前言: 我准备用nodejs+koa+uniapp实现一款餐饮点单小程序,以及nodejs+koa+vue实现后端管理 ...
- 微信小程序授权获取用户详细信息openid
小程序获取用户的头像昵称openid之类 第一种使用wx.getUserInfo直接获取微信头像,昵称 wx.getUserInfo({ success: function (res) { that. ...
- 微信小程序中使用云开发获取openid
微信小程序获取openid 新建一个微信小程序项目 注意要注册一个自己的小程序账号,并有属于自己的appid 点击云开发按钮,自行填入开发环境名称 打开app.js,找到依赖环境 修改为刚才设置的环境 ...
- 微信小程序登录 code 40029 天坑
微信登录时 code 大坑(服务端返回如下代码) {"errcode":40029,"errmsg":"invalid code, hints: [ ...
- 微信小程序传code 拿token 后台报40029 状态吗,是为什么?
看看是不是code用了两次,还有种可能,检查一下后台的appid
- 微信小程序之登录态维护(十一)
[未经作者本人同意,请勿以任何形式转载] >什么是登录态? 所谓登录态,就是程序在运行时,能够识别当前用户,能够证明自己的唯一性且合法. 我们知道,WEB服务器通过浏览器携带的cookie获取s ...
- 微信小程序 登录流程规范解读
一. 官方登录时序图 二. 简单理解 这里仅按照官方推荐的规范来 0. 前置条件 一共有三端: - 微信小程序客户端 - 第三方服务器端(自己搭建) - 微信服务器端 1. 客户端获得code,并将c ...
随机推荐
- MQ 消息队列的比较
目前业界有很多MQ产品,我们作如下对比: RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量 ...
- Spring Boot 入门系列
本系列博文版权 简书 面皮大师 所有,转载请标明原文及出处: http://www.jianshu.com/u/062bd8f1299c 项目地址: https://github.com/daleiw ...
- 45.oracle表类型、数据拆分、表分区
不要做一些没有意义的事情,就比如说你要离职并不打算吃回头草,离职理由中完全没有必要说明“领导的水平太渣,人品太差”此类的原因,而是“个人原因”,当然实在不批准辞职另说. oracle表类型 表的类型分 ...
- H01-Linux系统中搭建Hadoop和Spark集群
前言 1.操作系统:Centos7 2.安装时使用的是root用户.也可以用其他非root用户,非root的话要注意操作时的权限问题. 3.安装的Hadoop版本是2.6.5,Spark版本是2.2. ...
- 常用DOS命令和Linux命令
DOS命令 1.查询端口占用情况:netstat -aon |findstr "8080"; 查看端口进程号: 2.查看进程号信息: tasklist |findstr &qu ...
- Python turtle库学习笔记
1.简介 Python的turtle库的易操作,对初学者十分友好.对于初学者来说,刚学编程没多久可以写出许多有趣的可视化东西,这是对学习编程极大的鼓舞,可以树立对编程学习的信心.当然turtle本身也 ...
- c# 命名空间别名
如果命名空间比较长的话,并且在程序中经常使用,就可以用using来设置命名空间的别名 ,C#引入了别名机制 缩短程序员开发时间如: using NSSerialize = System.Compo ...
- win2003设置单用户登录
远程桌面是windows操作系统中一个很方便的功能,管理测试机资产.异地排除故障等,都很快捷.在windows xp sp2模式下,一般默认是单用户登录,也就是当A用户远程一台机器时,B用户在远程到这 ...
- Xamarin Mono For Android 4.6.07004看不到新建android
有很多朋友安装了Xamarin Mono For Android 4.6.07004看不到新建android项目 PS 官方安装包有BUG,在某些情况下可能会出现丢失VS插件的情况 (遇到此BUG请下 ...
- redis 常用的server的命令