现在微信小程序非常火爆,很多常规的APP都推出了自己的微信小程序。说到微信小程序,不可避免会触及到微信账号的授权登录,现在来说说一下哈!
首先需要自己的一个小程序,可以到微信公众平台注册一个自己的小程序: https://mp.weixin.qq.com/wxopen/waregister?action=step1:

在这里插入图片描述

前端部分:
编写自己的界面login.wxml:

<view>    <image class='pic' src='../../images/index.jpg'>image>view><view class='wxloggin'>  <form>    <view>      <button type='primary' open-type='getUserInfo' bindgetuserinfo='doLogin'>微信登录button>    view>  form>view>

login.js:

//获取应用实例const app = getApp()

Page({

  /**   * 页面的初始数据   */  data: {

  },

  /**   * 生命周期函数--监听页面加载   */  onLoad: function (options) {

  },

  //登录  doLogin: function(e){    console.log(e.detail.errMsg)    console.log(e.detail.userInfo)    console.log(e.detail.rawData)

    wx.login({      success: function(res){        console.log(res)        //获取登录的临时凭证        var code = res.code;        //调用后端,获取微信的session_key,secret        wx.request({          url: 'http://192.168.0.15:8090/wxLogin?code='+code,          method: "POST",          success: function(result){            console.log(result);            app.setGlobalUserInfo(e.detail.userInfo);            wx.redirectTo({              url: '../index/index'            })          }        })      }    })  }

})

后端部分:
后端运用的是springboot框架

在这里插入图片描述

官方教程:

在这里插入图片描述

说明:首先需要小程序端触发 wx.login方法拿到code,将code传到后台服务器,后台服务器结合小程序的appid和appsecret去请求微信接口服务器,微信接口服务器返回openid和session_key给后台服务器,然后进行自己的业务办理。

后台主要看的是controller代码,接受code以后,对https://api.weixin.qq.com/sns/jscode2session发起请求,最后将openid和session_key保存到redis,保持会话:

@RestController@Slf4jpublic class WXLoginController {

    @Autowired    private RedisOperator redis;

    @PostMapping("/wxLogin")    public JSONResult wxLogin(String code) {

        log.info("wxlogin - code: " + code);

//        https://api.weixin.qq.com/sns/jscode2session?//                appid=APPID&//                secret=SECRET&//                js_code=JSCODE&//                grant_type=authorization_code

        String url = "https://api.weixin.qq.com/sns/jscode2session";        Map<String, String> param = new HashMap<>();        param.put("appid", WxApp.APPID);        param.put("secret", WxApp.SECRET);        param.put("js_code", code);        param.put("grant_type", "authorization_code");

        String wxResult = HttpUtils.doGet(url, param);        log.info(wxResult);

        WXSessionModel model = JsonUtils.jsonToPojo(wxResult, WXSessionModel.class);

        log.info(model.toString());        // 存入session到redis        redis.set("user-redis-session:" + model.getOpenid(),                model.getSession_key(),                1000 * 60 * 30);

        return JSONResult.ok();    }

}

servlet后端连接 微信小程序与_微信小程序授权登录相关推荐

  1. 微信小程序中如何获取用户手机号授权登录

    随着微信小程序的普及,许多应用程序需要用户登录才能提供更好的服务.而获取用户手机号码是验证用户身份和确保账户安全的重要步骤之一.因此,在本文中,我们将介绍如何在微信小程序中实现手机号授权登录. 步骤一 ...

  2. 微信链接修改图片_微信链接修改图标

    自定义链接是什么?微信链接修改图片_微信链接修改图标 自定义微信分享链接是指将一条网页链接通过微信接口生成一张卡片,并且该卡片的标题,内容和图片都可以自己编辑.如下图效果 ● 未自定义的网页链接 ● ...

  3. java 微信开发收到乱码_微信公众号开发调用微信接口得到的参数中文变成乱码问题...

    做过微信开发的人应该都会接触到授权登录.获取用户信息等操作,比如获取用户信息,腾讯要求以get请求提交,返回的是json字符串. 通常我们使用的方法是用HttpURLConnection去调用接口,打 ...

  4. api 定位 微信小程序 精度_微信小程序开发知识点集锦

    一 小程序的生命周期 代码生命周期就是一个对象的生老病死,通常指程序从创建.开始.暂停.唤起.停止.卸载的过程.小程序的生命周期又可分为应用生命周期和页面的生命周期,先单独分析,在结合两者分析 应用生 ...

  5. js微信监听返回_微信小程序(2)- 框架结构amp;运行环境

    一.小程序框架结构 小程序框架分场景获取.逻辑层和视图层 场景获取:场景值是用来描述用户进入小程序的路径,可以在小程序的生命周期onLaunch 或 onShow 里获取.也可以通过wx.getLau ...

  6. webstorm下载微信小程序插件_微信电脑版可以打开小程序喽 前提你得下载测试版...

    据微信开发者团队消息最新推出的小程序开发套件已经支持开发者面向电脑版微信测试微信小程序相关功能. 开发者下载新版本开发套件即可针对电脑版微信进行小程序调试,不过似乎也没有什么需要特别调试的地方. 既然 ...

  7. 微信公众号发送小程序卡片_微信公众号群发文章支持添加小程序卡片

    2017年4月20日微信发布公告称,微信公众平号群发文章支持添加小程序功能,这对于推广小程序来说,无疑是不错的途径.那么微信公众号群发文章怎么添加小程序?下面爱站技术频道的小编带来的详细教程. 微信公 ...

  8. 微信小程序商机_微信小程序可能有哪些创业机会?

    从本质上来说,不管是微信小程序还是公众号都是一个工具而已,更多的商业模式还是来自于其他一些传统商业或新出现的方式的互联网化改造,通过嫁接到小程序实现互联网化,社交化等概念.目前看到火过的有电商.小游戏 ...

  9. h5 bootstrap 小程序模板_微信小程序和H5的区别在哪里?主要有三点

    原标题:微信小程序和H5的区别在哪里?主要有三点 随着移动互联网的发展,许多应用在不断的产生,要说现在更新快.开放功能多的应用,只能是微信小程序了.微信小程序开放了60多个流量入口,更新了各种新的功能 ...

  10. android应用程序开发_抚顺小程序开发定制找谁,吉林小程序定制

    湖南庚午网络科技有限公司为您详细解读kpuZae抚顺小程序开发定制找谁的相关知识与详情,微信小法式,简称小法式,缩写XCX,英文名Mini Program,是一种不需要#安拆即可使用的应用,它实现了应 ...

最新文章

  1. 年薪40万,我用的是这套Python学习体系
  2. inbox status and ServiceOrder Status
  3. 基本数据类型与String之间的转换
  4. mysql100多个字段如何优化_MySQL 调优/优化的 100 个建议
  5. 这个Nature推荐的代码海洋竟然有文章作者上传的所有可重现性脚本,涉及单细胞、微生物组、转录组分析、机器学习等相关
  6. 2021-2025年中国电子台秤行业市场供需与战略研究报告
  7. java单例的几种实现方法
  8. VoxelNet:End-to-End Learning for Point Cloud Based 3D Object Detection阅读笔记
  9. Matlab实现图像识别(四)
  10. 用友单计量与多计量单位应用说明
  11. js调用html打印去掉页眉页脚,js 客户端打印html 并且去掉页眉、页脚的实例
  12. unity 生成和识别二维码
  13. Bomb Game(题目地址链接:https://acs.jxnu.edu.cn/problem/NOIOPJCH02011661)
  14. 虚拟现实技术启蒙_艾孜尔江撰
  15. 怎么把游戏设置到计算机里,电脑怎么把游戏放到桌面上
  16. 在windows下python3使用multiprocessing.Pool时出现的问题
  17. docker实现MySQL主主互备(主主双机热备)
  18. ted学习方法_视世界为1000人,我是如何学习内容策略的TED设计系统的
  19. Betaflight二次开发-环境搭建
  20. 【大数据管理】数据组织与存储(二)

热门文章

  1. linux系统编程之进程(二):进程生命周期与PCB(进程控制块)
  2. JavaBean实现简单登录功能
  3. Java设计person类,有姓名,年龄,性别。要求:该类至多只能创建一男,一女两个对象。
  4. 数据结构实验1-线性表的顺序实现
  5. datagrid删除所有行卡住_MySQL ------ 删除数据(DELETE) (二十二)
  6. 小知识--电脑隐藏文件
  7. C程序设计--查找(二分法查找/折半查找)
  8. 我的世界java版怎么打开聊天栏_我的世界JAVA版才有的隐藏模式只有开发者才知道怎么进入...
  9. python queue join,python3多线程通信方式,主要理解队列的join()和task_done()方法
  10. 高德地图输入地址获取经纬度_不打开地图也能获取地址-利用百度地图API和Python实现...