四步获取微信登录所需的openid和session_key
文章目录
- 介绍
- 1、获取code并向服务器发送请求
- 2、引入发送HTTP请求的maven依赖
- 3、封装HTTP请求工具类
- 4、编写控制器
介绍
菜鸟教你一步到位
注意事项:
- 必须是
GET
请求 - 微信发送的
code
码只能使用一次
1、获取code并向服务器发送请求
注:http://localhost:8080/portal/blog/app/login
对应第4步的控制器
wx.login({success (res) {console.log(res);if (res.code) {//发起网络请求wx.request({url: 'http://localhost:8080/portal/blog/app/login', //自己服务器的地址data: {code: res.code //向自己服务器传递的code参数},method:'POST', //记得是post请求success(res){console.log(res);}})} else {console.log('登录失败!' + res.errMsg)}}})
2、引入发送HTTP请求的maven依赖
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version>
</dependency><!-- JSON工具类 -->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId>
</dependency>
3、封装HTTP请求工具类
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Component;import java.io.IOException;
import java.util.HashMap;/*** 微信登录,获取openid* @author XinLiu*/
@Component
public class WxHttpClient {private final static String BASE_URL = "https://api.weixin.qq.com/sns/jscode2session";private final static String appid = "自己的appid ";private final static String secret = "自己的secret ";public static HashMap<String, String> get(String appid, String secret, String code) throws IOException {String url = BASE_URL +"?appid=" +appid +"&secret=" +secret +"&js_code=" +code +"&grant_type=authorization_code";HttpGet httpGet = new HttpGet(url);CloseableHttpClient client = HttpClients.createDefault();CloseableHttpResponse response = client.execute(httpGet);HttpEntity entity = response.getEntity();String s = EntityUtils.toString(entity);JSONObject object = JSON.parseObject(s);String session_key = (String) object.get("session_key");String openid = (String) object.get("openid");HashMap<String, String> res = new HashMap<>();res.put("openid", openid);res.put("session_key", session_key);return res;}public static HashMap<String, String> get(String code) throws IOException {return get(appid, secret, code);}
}
4、编写控制器
@PostMapping("login")
public AjaxResult login(@RequestBody HashMap<String, String> code) throws IOException {HashMap<String, String> map = WxHttpClient.get(code.get("code"));System.out.println(map);return AjaxResult.success();}
打印结果格式如下:
{openid=odfCW5Kz3SfxpydxJH7dIHiCUwSo, session_key=FvEoC08amf16G0texJaBcA==}
可以通过get(key)
的方式取到值,具体如下:
String openid = map.get("openid");
String session_key = map.get("session_key");System.out.println("openid: "+openid);
System.out.println("session_key: "+session_key);
结果:
openid: odfCW5Kz3SfxpydxJH7dIHiCUwSo
session_key: 9reHgOu+urg1W1tWI32GVA==
四步获取微信登录所需的openid和session_key相关推荐
- 微信小程序(九)微信登录(授权)、获取微信登录凭证code、openid
微信登录 微信登录面对的问题: 怎么获取用户在微信的信息 怎么获取小程序用户的唯一身份标志 获取openid的方法 wx.login() 方法可以获取微信登录凭证code 使用code 可以向微信服务 ...
- vue axios封装 获取微信公众号用户的openid
目录 axios封装 openid vue vue+ts axios封装 一般会在项目的src目录中,新建一个文件夹,作为网络请求模块,用来封装axios, 创建axios实例: axios.crea ...
- .net微信公众号或微信打开,静默授权,获取微信登录者的openid
ajax提交时openid会丢失,所以第一次获取了,就放到cookie里,再提交时使用 JS代码 <script>$(function () {$(".submit") ...
- 5+App用户获取微信登录
直接上代码 <button onclick="getService()">一键登录</button> <button onclick="lo ...
- (详细版)java实现小程序获取微信登录,用户信息,手机号,头像
ps:springboot结合mybatisPlus.mysql实现,简单易懂,一件粘贴使用,详细往下看↓ 步骤: 1.注册微信开发平台账号,并创建小程序,获取小程序的AppID和AppSecret. ...
- Creator+微信小游戏:(1) 获取微信登录信息
目录 准备 开始 代码讲解 获取用户信息 下载图片 完整示例代码 本教程以Cocos Creator讲解如何获取微信用户的基本信息. 最常用的信息是:昵称(字符串),头像(图片). 准备 你应该准备好 ...
- 微信支付平台设置及如何获取微信支付所需参数
使用微信公众平台支付插件的,需要在微信公众平台设置/获取相关参数,其方法对各种版本的支付插件是通用的,现总结如下: 一.微信平台设置 微信平台的设置是非常重要的,请一定仔细设置,50%的安装错误都是由 ...
- 微信HOOK 3.获取微信登录信息【ID 头像 昵称】
1.用CE 不断 0 和 1之间切换,(因为软件登录为真=1) 57DD836C 2.最后用绿色带基址的 最先进入1的地址下断点 3.最后找到有5个字节的地址! 4.错误操作:call 必须带上否者崩 ...
- 获取小程序用户信息+java_java获取微信小程序用户信息
第一步:获取openid.session_key等信息. /** * 获取微信小程序的用户openid和session_key/unionid * 返回格式:{"session_key&qu ...
最新文章
- 【Spring】工厂模式解耦
- java设置按钮调用问题_按钮相关问题:尝试在空对象引用上调用虚方法
- jvm堆内存设置原理
- 原理图生成pdf 汉字不显示_EPLAN官方视频系列之二丨原理图设计智能功能(1)...
- Spring Boot Serverless 实战系列“架构篇”首发 | 光速入门函数计算
- eclipse 装配server时找不到tomcat
- python爬图片_Python爬虫:彼岸图网图片爬取-Go语言中文社区
- php重构求圆柱圆锥的体积,六年级数学下册2.8 圆锥的体积教案 (新版)苏教版...
- vc语言c1083错误,VC编程之VS error C1083: 无法打开包括文件:“gl\glew.h”: No such file or directory\...
- 朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序?
- itext7读取pdf 中文_pdf转为excel表
- 企业破产清算中几个难题的探析(转)
- 《linux命令行与shell编程大全》--读书笔记
- word文件限制编辑密码如果找回
- Master横扫围棋界 AI智能风暴来袭
- 4个要点,解析MVP产品怎么做?
- 2014最新的淘宝客网站SEO操作方法
- 从一个案例谈故障模型
- SOLID原则-单一职责原则
- Image-Level 弱监督图像语义分割汇总简析
热门文章
- CMD命令之BAT脚本路径信息
- java.lang.IllegalArgumentException: URLDecoder异常解决
- 并发场景下的幂等问题——分布式锁详解
- ARMv9刷屏 —— 号称十年最大变革,Realm机密计算技术有什么亮点?
- Ververica Platform-阿里巴巴全新Flink企业版揭秘
- 支付宝放出数字化经营新神器,可提升商家60%消费频次
- 巧用 Img / JavaScript 采集页面数据
- Apache RocketMQ 深圳沙龙报名开启!
- 数据中台 VS 传统大数据平台,这 8 点区别要了解
- IT 实力较量:决战超级数据中心之巅