java小程序详解_微信小程序登录Java后台接口(详解,附示例代码)
首先看一下官方文档
地址:微信小程序官方文档API登录接口
我们先对官方给的时序图进行简单的分析
1.当小程序调用wx.login()时,会获得一个code(临时登录凭证),然后我们需要用wx.request()将code发送到自己的服务器.
2.在服务器的接口中,调用登录凭证校检接口,将appid(小程序唯一标识)+appsecret(小程序的app secret)+code发送到微信接口服务.然后微信服务器会返回session_key(会话秘钥)+openid(用户的唯一标识).
3.在服务器的接口中,已经得到微信用户的唯一标识openid,已经数据传输的session_key,接下来就写业务逻辑了.
4.返回给小程序自定义登录态,小程序将它存入storage中.接下来的wx.request()的业务请求,都会携带自定义登录态.
5.在服务器的接口中通过自定义登录态查询openid和session_key,然后返回业务数据.
划一下重点
在服务器的接口中,需要进行一个http请求,将从小程序获得的code和接口中存储的appid和secret发送给微信接口服务,然后就可以获得session_key和openid.
接口地址
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
请求参数参数必填说明appid是小程序唯一标识
secret是小程序的 app secret
js_code是登录时获取的 code
grant_type是填写为 authorization_code
在不满足UnionID下发条件的情况下,返回参数参数说明openid用户唯一标识
session_key会话密钥
在满足UnionID下发条件的情况下,返回参数参数说明openid用户唯一标识
session_key会话密钥
unionid用户在开放平台的唯一标识符
返回说明//正常返回的JSON数据包{ "openid": "OPENID", "session_key": "SESSIONKEY",}//满足UnionID返回条件时,返回的JSON数据包{ "openid": "OPENID", "session_key": "SESSIONKEY", "unionid": "UNIONID"}//错误时返回JSON数据包(示例为Code无效){ "errcode": 40029, "errmsg": "invalid code"}小程序登录示例代码//app.jsApp({ onLaunch: function(){ wx.login({ success: function(res){ if (res.code) { //发起网络请求 wx.request({ url: 'https://test.com/onLogin', data: { code: res.code } }) } else { console.log('登录失败!' + res.errMsg) } } }); }})Java后台接口示例代码package com.xx.action;import java.util.Map;import org.springframework.http.HttpMethod;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.web.client.RestTemplate;import com.google.gson.Gson;import com.hp.bean.WeChatAppLoginReq;import com.hp.bean.WeChatSession;import com.opensymphony.xwork2.ActionSupport;public class WeChatLogin extends ActionSupport{/** *author 李俊标 *2018-4-19 */ private static final long serialVersionUID = 1L; private static final String APPID = "wx9xxxxxxxxxxx9b4"; private static final String SECRET = "685742***************84xs859"; private String code; public String getCode() {return code; } public void setCode(String code) {this.code = code; } //获取凭证校检接口 public String login() { //微信的接口 String url = "https://api.weixin.qq.com/sns/jscode2session?appid="+APPID+ "&secret="+SECRET+"&js_code="+ code +"&grant_type=authorization_code"; RestTemplate restTemplate = new RestTemplate(); //进行网络请求,访问url接口 ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, null, String.class); //根据返回值进行后续操作 if(responseEntity != null && responseEntity.getStatusCode() == HttpStatus.OK) { String sessionData = responseEntity.getBody(); Gson gson = new Gson(); //解析从微信服务器获得的openid和session_key; WeChatSession weChatSession = gson.fromJson(sessionData,WeChatSession.class); //获取用户的唯一标识 String openid = weChatSession.getOpenid(); //获取会话秘钥 String session_key = weChatSession.getSession_key(); //下面就可以写自己的业务代码了 //最后要返回一个自定义的登录态,用来做后续数据传输的验证 } return null; }}
java小程序详解_微信小程序登录Java后台接口(详解,附示例代码)相关推荐
- 微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-翟东平-专题视频课程...
微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-2445人已学习 课程介绍 微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识. 微信小 ...
- 视频教程-微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-微信开发
微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试 ...
- android微信小程序自动填表_微信小程序自动回复用户消息
最近用java做了一个实现在微信小程序内根据用户发送的消息内容回复用不通的消息功能,相当于一个自动回复的客服消息,效果图如下: 当用户在小程序输入框中输入内容或其他操作时,后台根据用户输入的 ...
- 小程序setdata优化_微信小程序 setData的使用方法详解
微信小程序 setData的使用方法详解 微信小程序 setData的使用方法详解 最近在使用微信小程序的setData时,遇到了以下问题.如下: 官网文档在使用setData()设置数组对象的某个元 ...
- java作为微信小程序的后端_微信小程序连接java后端
所需环境 1.微信开发者工具 2.eclipse 小程序端 Java后端 运行结果 注意事项 不校验合法域名在详情中,这个勾勾一定要勾上,不然就会这样 最后代码附上 w微信端wxml: 发送 微信端j ...
- java写微信小程序答辩问题_微信小程序毕业设计选题和毕业论文怎么写,答辩流程是怎样的?...
1. 开始准备选题 大四上学期开学时开始准备论文的,首先是确定论文主题,看自己想做什么毕业设计,可以选取之前接触过的,做过的东西,这样快一些,如果选的是没接触过的方向,一定要早点开始.打算做一个小程序 ...
- java drawimage图片不完整_微信小程序canvas.drawImage完全显示图片问题的解决
问题描述 问题产生 对于微信小程序,canvas处理过程中,dramImage默认图片引用是有残缺的 导入初始项目 打开链接(原官网例子),浏览器唤醒微信开发这工具,打开连接之前需要下载好微信开发者工 ...
- java写微信小程序答辩问题_微信小程序 开发中遇到问题总结
微信小程序 开发中遇到问题总结 1.由于小程序wx.request()方法是异步的,在app.js执行ajax后,各分页加载app.js的全局数据时,无法按顺序加载.例: //app.js App({ ...
- 微信小程序页面栈_微信小程序之页面传值(路由、页面栈、globalData、缓存)
1. 通过url带参数传递 1.1 固定参数传递 例如,从 list 页面到 detail 页面, 传递一个或多个固定值 list页面传值: 点此进入 detail detail页面取值: onLoa ...
最新文章
- 2021-2027年中国中空纤维膜行业市场研究及前瞻分析报告
- 开启ntp服务_Linux入门:Linux自有服务及软件包
- 也议GetLastKnownLocation!!(独家理解)
- 全球及中国铝行业产销需求与未来前景预测分析报告2022-2028年版
- 《剑指offer》— JavaScript(6)旋转数组的最小数字
- 最小覆盖子串_滑动窗口
- FPGA设计的常用思想与技巧(转)
- TCP/IP协议读书笔记(1)
- 02头文件的冲突导致,清除缓冲区失败之cin.ignore() 问题
- 在线算法交互、可视化与演示及应用(caffe 网络配置文件 .prototxt 的可视化)
- html 头标签 meta http-equiv 属性应用。
- HTML5定稿一周年,你必须要重新认识HTML5了
- windows无法安装软件
- Dagger2和MVParms的学习
- List集合排序的两种方法
- 华为android9升级包,华为Mate9官方固件ROM刷机包
- 3. 一元函数积分学
- Mac上批量修改文件的编码格式
- html转换markdownpad,MarkdownPad2导出HTML支持[TOC]
- 机器学习读书笔记之6 - 贝叶斯系列
热门文章
- asp.net UpdatePanel 不能局部刷新问题汇总
- 多播泡妞宝典---IGMP
- PowerDesigner物理模型用法总结
- mysql__CASE WHEN进行字符串替换处理
- 零拷贝实现高效的数据传输 -Efficient data transfer through zero copy
- 【工程项目经验】之C语言或汇编语言宏展开
- 人工智能 信道估计 深度学习_深度学习人体姿态估计算法综述
- mysql慢查询 表级锁_三分钟了解Mysql的表级锁——《深究Mysql锁》
- lumen 分页_关于laravel 得手动分页问题
- Spring-BeanDefinitionRegistryPostProcessor接口