一、在微信开放平台创建移动应用

点击创建移动应用

二、拿到微信登录权限

三、app或小程序授权

1. app在拿到用户同意授权的时候,会传来一个code码:

后台接受到app端传来的code码,远程调用接口:https://api.weixin.qq.com/sns/oauth2/access_token;请求接口为GET请求;参数为:appid,secret,code,grant_type

具体请求方式可参考:

public static String net(String strUrl, Map params, String method) throws Exception {

HttpURLConnection conn = null;

BufferedReader reader = null;

String rs = null;

try {

StringBuffer sb = new StringBuffer();

if (method == null || method.equals("GET")) {

strUrl = strUrl + "?" + urlencode(params);

}

URL url = new URL(strUrl);

conn = (HttpURLConnection) url.openConnection();

if (method == null || method.equals("GET")) {

conn.setRequestMethod("GET");

} else {

conn.setRequestMethod("POST");

conn.setDoOutput(true);

}

conn.setRequestProperty("User-agent", userAgent);

conn.setUseCaches(false);

conn.setConnectTimeout(DEF_CONN_TIMEOUT);

conn.setReadTimeout(DEF_READ_TIMEOUT);

conn.setInstanceFollowRedirects(false);

conn.connect();

if (params != null && method.equals("POST")) {

try {

DataOutputStream out = new DataOutputStream(conn.getOutputStream());

out.writeBytes(urlencode(params));

} catch (Exception e) {

e.printStackTrace();

}

}

InputStream is = conn.getInputStream();

reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));

String strRead = null;

while ((strRead = reader.readLine()) != null) {

sb.append(strRead);

}

rs = sb.toString();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null) {

reader.close();

}

if (conn != null) {

conn.disconnect();

}

}

return rs;

}

调用方法参考:

Map params = new HashMap();

params.put("appid", WeChatProperties.APPID);

params.put("secret", WeChatProperties.SECRET);

params.put("code", code);

params.put("grant_type", WeChatProperties.GRANT_TYPE);

Map resultMap = (Map) JSON

.parse(Certification.net("https://api.weixin.qq.com/sns/oauth2/access_token", params, "GET"));

获取到返回值:

{

"access_token": "",

"refresh_token": "",

"unionid": "",

"openid": "",

"scope": "",

"expires_in": 7200

}

在使用spring boot时,也可以直接使用RestTemplate来进行调用,示例为:

Map, ?> map = new ObjectMapper()

.readValue(

restTemplate

.getForEntity(MiniappProperties.login_url + "?appid=" + MiniappProperties.appid

+ "&secret=" + MiniappProperties.secret + "&grant_type="

+ MiniappProperties.grant_type + "&js_code=" + code, String.class)

.getBody(),

Map.class);

来直接调用。

openid为在此应用下,此种登录方法的微信号的标识;可在数据库记录此字段,判断是否为同一微信号登录;unionid为在此应用下微信号的标识,可用来标识不同登录方式采用的是同一个微信号;

2. 小程序在拿到用户同意授权的时候,会传来一个code码:

后台接受到app端传来的code码,远程调用接口:https://api.weixin.qq.com/sns/jscode2session;请求接口为GET请求;参数为:appid,secret,js_code,grant_type

除了参数不同,调用接口不同,其他使用方法与app登录相同

获取返回值:

{

"openid": "",

"session_key": "",

"expires_in": 7200

}

openid为在此应用下,此种登录方法的微信号的标识;

java微信的登录方法_app微信登录/小程序登录后台操作流程登录(java)相关推荐

  1. onenetsim定位功能吗_微信小程序新增后台定位功能,你会卸载地图APP用微信导航吗...

    [PConline]8月8日,根据微信官方发布的消息显示,小程序新增后台定位功能,并对自动化测试功能进行了升级.据介绍,为了满足线路导航.路线记录等服务场景下,小程序需要长时间持续定位来提供服务.当用 ...

  2. java开发微信如何维护登录状态_微信小程序中做用户登录与登录态维护的实现详解...

    总结 大家都知道,在开发中提供用户登录以及维护用户的登录状态,是一个拥有用户系统的软件应用普遍需要做的事情.像微信这样的一个社交平台,如果做一个小程序应用,我们可能很少会去做一个完全脱离和舍弃连接用户 ...

  3. 微信小程序+SpringBoot实现用户登录

    微信小程序+SpringBoot实现用户登录 前言 微信小程序越来越吃香了(前话就这么多,嘿嘿) 前端 那就开始吧,登录界面就如此了 wxml内容如下,这是格式化后粘贴过来的,emmm,怪像那回事. ...

  4. 微信小程序 云开发 欢迎登录注册

    提示:此文章相关代码在新版小程序上或许已经不可用!该小程序片段需要使用云函数,云函数具体内容参考github.需要使用云开发提供的数据库,相关的具体使用方法还请参考小程序云开发的相关最新文档.该部分代 ...

  5. 【愚公系列】2022年09月 微信小程序-微信小程序实现网页一键登录功能

    文章目录 前言 一.微信小程序实现网页一键登录功能 1.旧版登录方法 2.新版登录方法 二.相关第三方包源码 前言 如果微信小程序要获取微信登录的用户信息,需要拿到code去后台换取用户信息,具体步骤 ...

  6. 微信小程序,如何实现登录

    业务流程: 1:首先需要一个按钮触发事件 2:调用微信小程序的登录接口wx.login,拿到code 3:调用微信小程序的获取用户信息的接口wx.getUserProfile,拿到用户的个人信息(包括 ...

  7. 微信小程序开发之——用户登录-搭建开发者服务器(2)

    一 概述 用Node.js搭建开发者服务器 开发服务器作为登录中的三个角色(小程序/开发者服务器/微信接口)中的重要一环 开发者服务器接收code,保存openid和session_key,并返回to ...

  8. 微信小程序开发之——用户登录-登录流程(1)

    一 概述 新建微信小程序自带用户登录简化 小程序登录流程时序 二 新建微信小程序自带用户登录简化 新建的微信小程序默认有用户登录功能,将多余功能去除后,简化如下 2.1 index.wxml < ...

  9. 微信小程序踩坑—用户登录界面

    最近做的一个项目有涉及到用户登录.微信小程序的用户登录在我看来有两种,一种是需要用微信提供的用户身份标识,简单地说就是小程序的登录者就是使用这个小程序的微信用户,还有一种是小程序和服务器之间有自己的一 ...

最新文章

  1. linux gcc延时怎么写,推迟C静态对象构建 – Linux上的GCC
  2. ubuntu 安装 mongodb并修改仓库路径
  3. __FUNCTION__, __FILE__, __LINE__ (原)
  4. 普通调幅(AM)与抑制载波双边带调幅(DSB)matlab编程实现
  5. ginkgo spi 错误_开发SPI时不要犯这个错误
  6. 前端学习(3056):vue+element今日头条管理-反馈
  7. malloc()和calloc()有啥区别
  8. 嵌入式和fpga哪个好前景_二建考试选哪个专业比较好?其市场需求和就业前景如何? - 二级建造师...
  9. 张东:大数据时代挑战与解决之道
  10. 高等数学课后答案上册同济大学第七版第一章答案
  11. 呜呜。平安夜没有苹果
  12. linux的lilo,深入Linux的LILO
  13. python编程输入名字配对情侣网名_翻译:《实用的Python编程》01_05_Lists
  14. 微信公众号认证全过程
  15. 完美兼容IE_Opera_Firefox等主流浏览器的锁定表格的 表头以及表头列
  16. 来看看今日的软件分享
  17. 编程-----魔法币投币方案设计
  18. Oracle时间函数 to_char()及常用时间格式
  19. html 做笔记,HTML笔记(一)
  20. css中background-size属性cover、contain、100%的含义案例详解

热门文章

  1. Python数据可视化——matplotlib绘制的图里面不能正常显示中文,提示警告的解决方法
  2. opencv目标跟踪概述和人脸跟踪
  3. 搜索不到投屏设备怎么办_乐播投屏搜索不到设备怎么办 手把手解决你的烦恼...
  4. 币乎作者@安安anan | 国产公链之光,实至名归
  5. MT6739 充电电量计代码架构变化梳理
  6. WordPressJustNews资讯博客类模板源码V5.2.2版
  7. 2022合肥新站高新区招聘社区工作者每日一练及答案
  8. 前端小白,了解这3点,不怕找不到工作!
  9. AMBA协议—APB协议2.0/3.0
  10. 动态窗口法的理解和一些细节