玩转微信登录

前端对此接口进行请求

package com.chuang.bootplus.controller.wx;import com.alibaba.fastjson.JSONObject;
import com.chuang.bootplus.entity.UserInfo;
import com.chuang.bootplus.service.UserInfoService;
import com.chuang.bootplus.utils.HttpClientUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.text.ParseException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@RestController
@CrossOrigin
@RequestMapping("/wx")
public class WxLogin2 {@AutowiredUserInfoService userInfoService;//小程序端登录接收code@PostMapping("/login")@CrossOriginpublic Map<String, String> login(@RequestParam("code") String code,@RequestParam("CName") String CName,@RequestParam("Cimgurl") String url) {// 配置请求参数Map<String, String> param = new HashMap<>();param.put("appid", "");param.put("secret", "");param.put("js_code", code);param.put("grant_type","authorization_code" );// 发送请求String wxResult = HttpClientUtil.doGet("https://api.weixin.qq.com/sns/jscode2session", param);JSONObject jsonObject = JSONObject.parseObject(wxResult);// 获取参数返回的System.out.println(wxResult);String session_key = jsonObject.get("session_key").toString();System.out.println(session_key);String open_id = jsonObject.get("openid").toString();System.out.println(open_id);// 根据返回的实体类,判断用户是否是新用户,是的话,将用户信息存到数据库UserInfo userInfo = new UserInfo();UserInfo byId = userInfoService.getById(open_id);if (byId != null) {Map<String, String> result = new HashMap<>();result.put("Cname", byId.getNickname());result.put("CImgUrl", byId.getAvatar());
//            result.put("CNum",byId);result.put("session_key", session_key);result.put("open_id", open_id);return result;} else {userInfo.setNickname(CName);userInfo.setAvatar(url);userInfo.setSession_key(session_key);userInfo.setOpenid(open_id);// 添加到数据库Boolean flag = userInfoService.save(userInfo);}// 封装返回小程序Map<String, String> result = new HashMap<>();result.put("session_key", session_key);result.put("open_id", open_id);return result;}}

后端返回

session_key

openid

需要用到的util类

package com.chuang.bootplus.utils;import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.IOException;
import java.net.URI;
import java.util.Map;public class HttpClientUtil {public static String doGet(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uriURIBuilder builder = new URIBuilder(url);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doGet(String url) {return doGet(url, null);}
}

全部的依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.4.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.shengxian</groupId><artifactId>shop</artifactId><version>0.0.1-SNAPSHOT</version><name>shop</name><description>Demo project for Spring Boot</description><properties><java.version>1.8</java.version></properties>
<!--    <dependencies>-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-thymeleaf</artifactId>-->
<!--        </dependency>-->
<!--        &lt;!&ndash; 模板引擎 &ndash;&gt;-->
<!--        <dependency>-->
<!--            <groupId>org.apache.velocity</groupId>-->
<!--            <artifactId>velocity-engine-core</artifactId>-->
<!--            <version>2.0</version>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-web</artifactId>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>mysql</groupId>-->
<!--            <artifactId>mysql-connector-java</artifactId>-->
<!--            <scope>runtime</scope>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>org.projectlombok</groupId>-->
<!--            <artifactId>lombok</artifactId>-->
<!--            <optional>true</optional>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-test</artifactId>-->
<!--            <scope>test</scope>-->
<!--        </dependency>-->
<!--        &lt;!&ndash; mybatis-plus &ndash;&gt;-->
<!--        &lt;!&ndash; mybatis-plus 是自己开发,并非官方的! &ndash;&gt;-->
<!--        <dependency>-->
<!--            <groupId>com.baomidou</groupId>-->
<!--            <artifactId>mybatis-plus-boot-starter</artifactId>-->
<!--            <version>3.0.5</version>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>io.swagger</groupId>-->
<!--            <artifactId>swagger-annotations</artifactId>-->
<!--            <version>1.5.22</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>commons-httpclient</groupId>-->
<!--            <artifactId>commons-httpclient</artifactId>-->
<!--            <version>3.0.1</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.commons</groupId>-->
<!--            <artifactId>commons-io</artifactId>-->
<!--            <version>1.3.2</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.commons</groupId>-->
<!--            <artifactId>commons-lang3</artifactId>-->
<!--            <version>3.4</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.httpcomponents</groupId>-->
<!--            <artifactId>httpclient</artifactId>-->
<!--            <version>4.3.2</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>com.alibaba</groupId>-->
<!--            <artifactId>fastjson</artifactId>-->
<!--            <version>1.2.38</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-test</artifactId>-->
<!--            <scope>test</scope>-->
<!--            <exclusions>-->
<!--                <exclusion>-->
<!--                    <groupId>org.junit.vintage</groupId>-->
<!--                    <artifactId>junit-vintage-engine</artifactId>-->
<!--                </exclusion>-->
<!--            </exclusions>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.aspectj</groupId>-->
<!--            <artifactId>aspectjweaver</artifactId>-->
<!--            <version>1.8.13</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.commons</groupId>-->
<!--            <artifactId>commons-pool2</artifactId>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.shiro</groupId>-->
<!--            <artifactId>shiro-spring</artifactId>-->
<!--            <version>1.4.1</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>commons-httpclient</groupId>-->
<!--            <artifactId>commons-httpclient</artifactId>-->
<!--            <version>3.0.1</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-devtools</artifactId>-->
<!--        </dependency>-->
<!--        <dependency>-->
<!--            <groupId>org.apache.commons</groupId>-->
<!--            <artifactId>commons-io</artifactId>-->
<!--            <version>1.3.2</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.commons</groupId>-->
<!--            <artifactId>commons-lang3</artifactId>-->
<!--            <version>3.4</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.httpcomponents</groupId>-->
<!--            <artifactId>httpclient</artifactId>-->
<!--            <version>4.3.2</version>-->
<!--        </dependency>-->
<!--        &lt;!&ndash;httpClint&ndash;&gt;-->
<!--        <dependency>-->
<!--            <groupId>org.apache.httpcomponents</groupId>-->
<!--            <artifactId>httpclient</artifactId>-->
<!--            <version>4.5.5</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.httpcomponents</groupId>-->
<!--            <artifactId>httpmime</artifactId>-->
<!--            <version>4.5</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>com.alibaba</groupId>-->
<!--            <artifactId>fastjson</artifactId>-->
<!--            <version>1.2.38</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>com.auth0</groupId>-->
<!--            <artifactId>java-jwt</artifactId>-->
<!--            <version>3.4.1</version>-->
<!--        </dependency>--><!--        <dependency>-->
<!--            <groupId>com.github.binarywang</groupId>-->
<!--            <artifactId>weixin-java-miniapp</artifactId>-->
<!--            <version>3.3.0</version>-->
<!--        </dependency>--><!--        &lt;!&ndash;springSecurity&ndash;&gt;-->
<!--        &lt;!&ndash;<dependency>&ndash;&gt;-->
<!--        &lt;!&ndash;    <groupId>org.springframework.boot</groupId>&ndash;&gt;-->
<!--        &lt;!&ndash;    <artifactId>spring-boot-starter-security</artifactId>&ndash;&gt;-->
<!--        &lt;!&ndash;    <version>2.3.7.RELEASE</version>&ndash;&gt;-->
<!--        &lt;!&ndash;</dependency>&ndash;&gt;--><!--        &lt;!&ndash;<dependency>&ndash;&gt;-->
<!--        &lt;!&ndash;    <groupId>com.fasterxml.jackson.core</groupId>&ndash;&gt;-->
<!--        &lt;!&ndash;    <artifactId>jackson-databind</artifactId>&ndash;&gt;-->
<!--        &lt;!&ndash;    <version>2.11.3</version>&ndash;&gt;-->
<!--        &lt;!&ndash;</dependency>&ndash;&gt;--><!--        &lt;!&ndash;&lt;!&ndash;thymeleaf和security整合&ndash;&gt;&ndash;&gt;-->
<!--        &lt;!&ndash;<dependency>&ndash;&gt;-->
<!--        &lt;!&ndash;    <groupId>org.thymeleaf.extras</groupId>&ndash;&gt;-->
<!--        &lt;!&ndash;    <artifactId>thymeleaf-extras-springsecurity5</artifactId>&ndash;&gt;-->
<!--        &lt;!&ndash;    <version>3.0.4.RELEASE</version>&ndash;&gt;-->
<!--        &lt;!&ndash;</dependency>&ndash;&gt;--><!--    </dependencies>--><dependencies><dependency><groupId>net.coobird</groupId><artifactId>thumbnailator</artifactId><version>0.4.8</version></dependency><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-jdbc</artifactId></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.1.0</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
<!--        &lt;!&ndash; 模板引擎 &ndash;&gt;-->
<!--        <dependency>-->
<!--            <groupId>org.apache.velocity</groupId>-->
<!--            <artifactId>velocity-engine-core</artifactId>-->
<!--            <version>2.0</version>-->
<!--        </dependency>--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- mybatis-plus --><!-- mybatis-plus 是自己开发,并非官方的! --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0.5</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.22</version></dependency><!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-test</artifactId>-->
<!--            <scope>test</scope>-->
<!--            <exclusions>-->
<!--                <exclusion>-->
<!--                    <groupId>org.junit.vintage</groupId>-->
<!--                    <artifactId>junit-vintage-engine</artifactId>-->
<!--                </exclusion>-->
<!--            </exclusions>-->
<!--        </dependency>--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.13</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><!--springSecurity--><!--<dependency>--><!--    <groupId>org.springframework.boot</groupId>--><!--    <artifactId>spring-boot-starter-security</artifactId>--><!--    <version>2.3.7.RELEASE</version>--><!--</dependency>--><!--<dependency>--><!--    <groupId>com.fasterxml.jackson.core</groupId>--><!--    <artifactId>jackson-databind</artifactId>--><!--    <version>2.11.3</version>--><!--</dependency>--><!--&lt;!&ndash;thymeleaf和security整合&ndash;&gt;--><!--<dependency>--><!--    <groupId>org.thymeleaf.extras</groupId>--><!--    <artifactId>thymeleaf-extras-springsecurity5</artifactId>--><!--    <version>3.0.4.RELEASE</version>--><!--</dependency>--><!--        <dependency>-->
<!--            <groupId>org.apache.shiro</groupId>-->
<!--            <artifactId>shiro-spring</artifactId>-->
<!--            <version>1.4.1</version>-->
<!--        </dependency>--><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.4</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.3.2</version></dependency><!--httpClint--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.5</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.5</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.38</version></dependency><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-miniapp</artifactId><version>3.3.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
</project>

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

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

相关文章

谷歌工程师文化中的几个核心原则

转载自 谷歌工程师文化中的几个核心原则 每周&#xff0c;一组谷歌员工都会在厕所的墙壁上粘贴一页来分享本周的测试小建议。有时这页纸会讨论依赖注入&#xff0c;并提供一个简单的示例展示如何用不同语言使用它&#xff1b;有时它可能会分享如何安装一个用于测量团队代码库…

初探CSRF在ASP.NET Core中的处理方式

前言 前几天&#xff0c;有个朋友问我关于AntiForgeryToken问题&#xff0c;由于对这一块的理解也并不深入&#xff0c;所以就去研究了一番&#xff0c;梳理了一下。 在梳理之前&#xff0c;还需要简单了解一下背景知识。 AntiForgeryToken 可以说是处理/预防CSRF的一种处理…

双重循环

一、什么是二重循环&#xff1f; 一个循环体内包含另一个完整的循环结构。 比如说&#xff1a; 1.while(循环条件1){ //循环操作1 while(循环条件2){ //循环操作2 } } 2.do{ //循环操作1 do{ //循环操作2 }while(循环条件2); }while(循环条件1); 3.for(循环条件1){ //循环操作1…

二维数组常用的赋值方式

静态初始化并赋值 int[][] data new int[][] { { 1, 2 }, { 2, 3 }, { 2, 3, 4 }, { 1, 2, 3, 4 } };print(data);int edges[][]{{0,1},{1,2},{1,3},{2,4},{3,4},{2,5}};动态赋值 //动态赋值int[][] data2 new int[3][2];for (int i 0; i < data2.length; i) {for (int j…

HBase体系架构说明

HBase体系架构说明&#xff01; client&#xff1a;两种—-Hbase shell 命令行接口 JavaAPI client访问Region不能直接访问&#xff0c;首先client需要先连接到zookeeper&#xff0c;zookeeper管理HMaster&#xff0c;说明&#xff0c;hdfs集群&#xff0c;在没有zookeepe…

面试中的这些坑,你踩过几个?

转载自 面试中的这些坑&#xff0c;你踩过几个&#xff1f; 01、请你做一个自我介绍 误区&#xff1a; 一般人回答这个问题过于平常&#xff0c;只说姓名、年龄、爱好、工作经验&#xff0c;这些在简历上都有。 要点&#xff1a; 简历上有的可以一两句话带过&#xff0c;…

asp.net core 编译mvc,routing,security源代码进行本地调试

因为各种原因&#xff0c;需要查看asp.net core mvc的源代码来理解运行机制等等&#xff0c;虽说源代码查看已经能很好的理解了。但是能够直接调试还是最直观的。所有就有了本次尝试。因调试设置源代码调试太辍笔&#xff0c;所以不用这个方法&#xff0c;转而使用编译源代码的…

并查集判断是否有环存在

题目描述 思路分析 代码实现 package com.atguigu.disjointSet;public class djset {public static int VERTICES6;public static void initialise(int parent[]){int i;for (i 0; i < VERTICES; i) {parent[i]-1;}}public static int find_root(int x,int parent[]){int …

进入ASP .net mvc的世界

一、mvc执行流程&#xff1a; 启动mvc项目–>Global.asax–>App_Strat–>RouteConfig–>Controllers(控制器)–>View(视图)–Index.aspx 二&#xff1a;Controller&#xff0c;控制器的代码&#xff0c;包含动作方法和业务操作 三&#xff1a;View&#xff0c;…

Visual Studio 2017更新,侧重于提高稳定性

Microsoft已对其旗舰开发软件产品Visual Studio 2017&#xff08;VS2017&#xff09;的安装程序和设置引擎做了全新设计&#xff0c;意在能快速地部署更新到VS2017。VS2017的第一个命名版本更新在VS2017首发的一个月后就可用&#xff0c;这充分体现了这一全新设计的优势所在。 …

你还在Java8中使用循环语句吗?

转载自 你还在Java8中使用循环语句吗&#xff1f; Java 8中的新功能特性改变了游戏规则。对Java开发者来说这是一个全新的世界&#xff0c;并且是时候去适应它了。 在这篇文章里&#xff0c;我们将会去了解传统循环的一些替代方案。在Java 8的新功能特性中&#xff0c;最棒…

hadoop fs -ls / 出现WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform

Hadoop fs -ls / 出现WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable问题 配置完hadoop启动的时候出现如下警告信息&#xff1a; WARN util.NativeCodeLoader: Unable to load native-…

阅读器关闭时尝试调用Read无效时的解决方法

今天在写asp .netmvc的项目时&#xff0c;发现了个困扰我很久的问题&#xff0c;经过仔细研究终于解决了。 问题如下&#xff1a; 首先来看一下原来有问题的代码&#xff1a; public static SqlDataReader Excutereader(string sql,params SqlParameter [] param) {using (SqlC…

.NET或将引入类型类和扩展

类型类是另外一项正被考虑引入.NET未来版本的特性。在提案“外观和扩展&#xff08;Shapes and Extensions&#xff09;”中&#xff0c;该特性被称为外观&#xff0c;它们将大幅提升.NET泛型的能力。Mads Torgersen这样描述类型类&#xff1a; 接口抽象的是作为类型实例的对象…

成为更优秀的程序员:退后一步看问题

转载自 成为更优秀的程序员&#xff1a;退后一步看问题 一天&#xff0c;在工作中… Bug #3890 来自客户&#xff1a; 有个程序出现了错误&#xff0c;程序提示说“SpeedCalculator::compute()里出现了除零情况”。 请尽快修复&#xff01; 你打开SpeedCalculator.php&#…

JAVA生成随机数

方式一 Random rand new Random();for(int i0; i<10; i) {System.out.println(rand.nextInt(10) 1);}方式二 for (int i 0; i < 50; i) {arr[i](int)(100*Math.random());}

深夜福利, 小试linuxkit

前言 今天小编的朋友圈被DockerCon和linuxkit刷屏了&#xff0c;再不出来写点linuxkit的东东恐怕就要跟不上时代了。小编翻阅了N多的有关linuxkit的文章&#xff0c;发现绝大多数都是英文的讲解&#xff0c;小编本着对读者负责的态度决定先将linuxkit的文章翻译成中文&#xff…

HBase的hbase shell 详解

进入hbase命令行 ./hbase shell 显示hbase中的表 list 创建user表&#xff0c;里面包含info&#xff0c;date两个列族 create user,info,data create user,{NAME > info, VERSIONS > 5},{NAME > data , VERSIONS > 5 } 插入数据 puthbase> put ns1:t1, r1, c1, …

类的无参方法

一、方法&#xff1a; 1.组成&#xff1a;访问修饰符&#xff08;public&#xff09; 返回值类型&#xff08;void,String ,int&#xff09; 方法名&#xff08;采用驼峰命名法&#xff09;(){ //方法体 } eg:public String run(){ //方法体 return “快跑”; } 注意&#xff1…