四步获取微信登录所需的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==

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

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

相关文章

RuoYi-Cloud 部署篇_04(windows环境 mysql+nginx版本)

文章目录一、nginx 操作流程1. nginx 安装启动2. nginx 配置3. nginx 重新启动二、前端项目编译2.1. 前端编译打包2.2. 静态复制迁移三、后端项目启动2.1. 我启动了6个服务2.2. 测试验证一、nginx 操作流程 1. nginx 安装启动 nginx&#xff08;windows环境安装&#xff09; …

从P4到P9, 在马云家写代码到双11前端PM

阿里妹导读&#xff1a;今年的双11已经是阿里资深前端技术专家舒文来阿里的第11年&#xff0c;从应届生到双11前端PM&#xff0c;他一路升级打怪&#xff0c;实现了岗位上从P4到P9的晋升。这第11届双11顺利结束之际&#xff0c;他把在阿里这些年的成长经历做一个总结和分享&…

在Java虚拟机上班是一种怎样的体验?

来源 | 编程技术宇宙责编| Carol封图 | CSDN 下载自视觉中国本文用知乎体的风格简单介绍了JVM中几个内置线程的工作&#xff0c;希望对大家学习JVM有一点帮助。匿名用户JVM老鸟228 人赞同了该回答利益相关&#xff0c;匿了&#xff01;JVM公司里面线程众多&#xff0c;派系林立…

微服务架构四大金刚利器

概述 互联网应用发展到今天&#xff0c;从单体应用架构到SOA以及今天的微服务&#xff0c;随着微服务化的不断升级进化&#xff0c;服务和服务之间的稳定性变得越来越重要&#xff0c;分布式系统之所以复杂&#xff0c;主要原因是分布式系统需要考虑到网络的延时和不可靠&…

RuoYi-Cloud 部署篇_01(linux环境 Oracle +nginx版本)

文章目录一、基础准备1. 技术选型2. 源码克隆3. 安装依赖4. 安装oracle5. 安装启动Mysql6. 安装启动Redis7. 创建数据库&#xff0c;执行 SQL脚本文件二、安装与配置 nacos2.1. 下载nacos2.2. 安装 nacos2.3. nacos持久化配置2.4. 执行脚本文件2.5. nacos连接 mysql 配置信息2.…

当60亿次攻击来袭,人机联合打了一场漂亮的防御战

云是大规模体量下各种小概率事件常态化的一个复杂场&#xff0c;云上的攻防对抗是攻击者和防御者在这张复杂场上的博弈与演化。大规模的环境之中充斥着各种各样转瞬即逝的信息&#xff0c;对于威胁&#xff0c;没有什么是比「大规模」和「转瞬即逝」还更好的隐匿与庇护。任何一…

常见外包公司汇总

1.博朗软件Bleum(上海) 2.中软国际(北京) 3.东软集团Neusoft (沈阳) 4.博彦科技BeyondSoft (北京) 5.中电金信(北京) 6.法本信息&#xff08;深圳&#xff09; 7.浙大网新Insigma (杭州) 8.奥博杰天Objectiva (北京) 9.浪潮Inspur (济南) 10.软通动力iSoftStone(北京 …

Cloudera完善企业数据云愿景,新品进一步扩展无处不在的云体验

Cloudera发布CDP私有云产品&#xff0c;基于红帽OpenShift构建&#xff0c;凭借云原生速度、规模和经济性&#xff0c;加速私有云和混合云数字化转型 2020年6月23日 &#xff0c;企业数据云公司Cloudera&#xff08;NYSE&#xff1a;CLDR&#xff09;发布Cloudera Data Platfo…

RuoYi-Cloud 部署篇_02(linux环境 Oracle +nginx版本)

文章目录一、模块配置修改1. ruoyi-gateway-dev.yml2. ruoyi-auth-dev.yml3. ruoyi-system-dev.yml4. ruoyi-gen-dev.yml5. ruoyi-job-dev.yml6. ruoyi-file-dev.yml二、后端配置预启动2.1. 部署资料整合2.2. 模块端口划分2.3. 组件端口划分2.4. 服务脚本编写2.5. 前端编译生产…

一个多业务、多状态、多操作的交易链路?闲鱼架构这样演进

前言 双十一刚刚结束&#xff0c;成交额2684亿震惊全世界&#xff0c;每秒订单峰值达54.4W笔。在闲鱼2000万DAU&#xff0c;交易数额同样增长迅速的今天&#xff0c;我们如何保障交易链路的稳定与快速支撑业务&#xff1f;这篇文章从客户端开发的角度&#xff0c;介绍闲鱼交易…

Windows版nacos启动报错(nacos安装路径问题)

文章目录1、出错日志2、出错原因3、解决方案1、出错日志 Error starting ApplicationContext. To display the conditions report re-run your application with debug enabled.2021-10-20 09:23:37,048 ERROR Application run failedorg.springframework.beans.factory.Unsati…

在Serverless Kubernetes集群中轻松运行Argo Workflow

导读 Argo是一个基于kubernetes实现的一个Workflow(工作流)开源工具&#xff0c;基于kubernetes的调度能力实现了工作流的控制和任务的运行。 目前阿里云容器服务ACK集群中已经支持工作流的部署和调度&#xff0c;这里我们介绍如果在ASK(Serverless Kubernetes)集群中使用Argo…

RuoYi-Cloud 部署篇_03(linux环境 Oracle +nginx版本)

请参考RuoYi-Cloud 分布式部署_03&#xff08;linux环境 Mysqlnginxredis版本&#xff09;

没想到 Google 排名第一的编程语言,为什么会这么火?

没想到吧&#xff0c;Python 又拿第一了&#xff01; 在 Google 公布的编程语言流行指数中&#xff0c;Python 依旧是全球范围内最受欢迎的技术语言&#xff01;01为什么 Python 会这么火&#xff1f;核心还是因为企业需要用它&#xff01;因为其易用、逻辑简单并拥有海量扩展包…

写1行代码影响1000000000人,这是个什么项目?

不带钱不带卡&#xff0c;只带手机出门就能畅行无阻&#xff0c;这已是生活的常态。益普索发布的《2019第一季度第三方移动支付用户研究》报告显示&#xff0c;移动支付在手机网民中的渗透率高达95.1%&#xff0c;截至今年1月&#xff0c;支付宝全球用户数已经突破10亿。你或许…

SpringCloud整合nacos服务时无法发现服务

目录一、介绍二、解决方案一、介绍 以下是问题分析 nacos服务器启动正常。bootstrap.yml配置正常。项目启动正常。nacos无法找到服务。 二、解决方案 这种情况输入缺少依赖&#xff0c;只需要在项目中导入依赖即可&#xff1a; <dependency><groupId>org.spri…

高德客户端及引擎技术架构演进与思考

2019杭州云栖大会上&#xff0c;高德地图技术团队向与会者分享了包括视觉与机器智能、路线规划、场景化/精细化定位、时空数据应用、亿级流量架构演进等多个出行技术领域的热门话题。现场火爆&#xff0c;听众反响强烈。我们把其中的优秀演讲内容整理成文并陆续发布出来&#x…

RuoYi-Cloud 部署篇_01(windows环境 Oracle+nginx版本)

请参考以下二篇博文&#xff1a; RuoYi-Cloud 部署篇_01&#xff08;windows环境 mysql版本&#xff09; RuoYi-Cloud 部署篇_01&#xff08;linux环境 oraclenginx版本

免费直播:主流深度框架对比:总有一款适合你~

常常有小伙伴在后台反馈&#xff1a;想了解深度学习该怎么学&#xff1f;自学难度大又没有效果&#xff0c;该怎么办&#xff1f;CSDN为了解决这个难题&#xff0c;联合唐宇迪老师为大家带来了一场精彩的直播【一节课掌握深度学习必备框架】。本次直播将带大家了解在开始深度学…

Swift 在 GAIA 平台云端一体化的探索

作者|姜沂&#xff08;倾寒&#xff09; 出品|阿里巴巴新零售淘系技术部 S1 阶段在使用 SwiftUI 编写集团内部使用的 SOT APP 时&#xff0c;有幸参与到 GAIA &#xff08;FaaS&#xff09;平台云端一体化的探索&#xff0c;从头到尾实现了一套基于 Swift 语言实现的遵守 GAIA…