官网地址:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
官网提供的四个步骤
- 第一步:用户同意授权,获取code
- 第二步:通过code换取网页授权access_token
- 第三步:刷新access_token(如果需要)
- 第四步:拉取用户信息(需scope为 snsapi_userinfo)
- 附:检验授权凭证(access_token)是否有效
一、获取code
-
所需要的参数
-
授权效果
-
错误码的返回
二、获取access_token
第一步会获得一个微信返回的code,拿着这个CODE 还有APPID还有公钥往微信发送请求
// 1.调用getHTMLAccessToken JSONObject htmlAccessToken = WeChatUtil.getHTMLAccessToken(code); // 2.获取用户授权的微信地址 public static final String GET_HTML_ACCESS_TOKEN = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code"; /** java 项目 www.fhadmin.cn * 3.根据code获取access_token * @param code * @return access_token,open_id */ public static JSONObject getHTMLAccessToken(String code) { String replace =GET_HTML_ACCESS_TOKEN.replace("APPID", WeChatResources.APPID).replace("SECRET", WeChatResources.APPSECRET).replace("CODE", code); log.info("请求url:{}",replace); JSONObject jsonObject = HttpUtil.doGet(replace); return jsonObject; } /** * 4.发送请求的doGET方法 */ public static JSONObject doGet(String url) { HttpClient httpClient = HttpClientBuilder.create().build(); HttpGet get = new HttpGet(url); JSONObject jsonObject = null; try { HttpResponse response = httpClient.execute(get); HttpEntity entity = response.getEntity(); if (null != entity) { String result = EntityUtils.toString(entity); jsonObject = JSONObject.fromObject(result); } } catch (IOException e) { e.printStackTrace(); } return jsonObject; } // 5.方法响应成功后获取access_token和openid Object access_token = htmlAccessToken.get("access_token"); Object openid = htmlAccessToken.get("openid");
-
参数说明
-
返回参数说明
三、刷新access_token
-
由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。
-
获取第二步的refresh_token后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN -
请求方式同步骤二 用 HttpUtil.doGet(replace)
-
参数说明
-
返回参数说明
四、拉取用户信息
//1.根据access_token,open_id获取用户信息 从而完成微信的授权登入 JSONObject userInfo = WeChatUtil.getUserInfo(access_token, openid); //2.获取用户信息 openid public static final String GET_USER_INFO = "https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN"; /**java 项目 www.fhadmin.cn * 3.根据access_token,open_id获取用户信息 * @return */ public static JSONObject getUserInfo(Object access_token,Object open_id){ String replace = GET_USER_INFO.replace("ACCESS_TOKEN", access_token.toString()).replace("OPENID", open_id.toString()); JSONObject jsonObject = HttpUtil.doGet(replace); return jsonObject; }
-
参数说明
-
返回参数说明
-
检验授权凭证(access_token)是否有效
相关推荐
在Java开发中,微信授权登录是一种常见的用户身份验证机制,特别是在构建Web应用时。这个工具包简化了这一过程,使得开发者无需深入理解微信OAuth2.0授权协议的复杂细节就能集成微信登录功能。以下是关于“Java实现...
在Java开发中,微信授权和小程序授权是移动应用与微信平台交互的重要环节,主要用于实现用户身份验证和数据安全。本文将详细讲解如何使用Java处理小程序和App的微信授权,以及解析小程序传递的`encryptedData`参数,...
在本Java案例中,我们关注的是如何实现基于微信登录的功能,并结合微信支付API进行集成。这个项目使用了SpringBoot框架,这是一个广泛应用于构建微服务的轻量级框架,以其便捷的配置、内置服务器和自动配置功能而受...
java 微信公众号支付封装类,传入回调接口、用户openid、订单号、ip、fee即可无脑验签,返回数据直接前端调用。 用户授权获取用户信息,重定向方案设定。 推送通知 封装工具类,传入openid或者 List,可单推和群发。...
【基于Java微信接口】是关于使用Java编程语言与微信官方提供的API进行交互的技术主题。在进行这个项目的开发之前,首要的准备工作是确保你的计算机已经安装了Java Development Kit(JDK)。JDK是Java编程的基础,它...
总的来说,"JAVA微信网页授权.zip"文件可能包含了一个完整的微信授权登录的Java实现,包括关键的HTTP请求和响应处理代码,以及可能的异常处理逻辑。理解以上知识点,将有助于你有效地利用这个资源。
`libammsdk.jar`就是微信SDK的一个组成部分,它包含了与微信授权登录相关的类和方法。这个旧版的jar包可能是因为微信官方已经发布了新版本的SDK,但相关的文档尚未更新,使得开发者在尝试使用新版本时遇到困难。 ...
微信授权登录是现代Web应用程序中常见的一种用户身份验证方式,特别是在移动端应用与Web服务集成的场景下。通过微信授权登录,用户可以使用自己的微信账号直接登录到第三方网站或应用,无需另外注册或记忆新的用户名...
本文将深入探讨如何使用Java进行企业微信通用开发配置,以及Servlet在其中的作用。 首先,企业微信(Work WeChat)是腾讯公司为企业打造的一款高效办公平台,它提供了丰富的API接口,允许开发者构建各种定制化的...
当用户访问带有微信授权功能的网页时,系统会引导用户跳转到微信服务器进行授权。用户同意后,微信服务器会返回一个授权码(code),开发者需要将这个code通过HTTP请求发送到微信服务器换取access_token和openid。...
Java微信小程序Demo是一个针对初学者的实践项目,旨在帮助他们理解和掌握如何使用Java技术开发微信小程序。微信小程序是一种轻量级的应用开发平台,允许开发者在微信内创建原生体验的应用,而无需安装,用户可以方便...
在Java环境下实现微信授权登录的过程涉及多个步骤,主要包括配置微信开发者平台、获取AppID和AppSecret、用户授权、获取access_token以及刷新access_token等。以下是对这个过程的详细阐述: 1. **配置微信开发者...
微信授权及支付简易demo是一个基于Java开发的示例项目,旨在帮助开发者理解并实现微信H5的授权登录和支付功能。这个项目包含了完整的代码结构,虽然支付部分由于缺乏实际的参数而不能直接运行,但其设计和逻辑清晰,...
- **Login.java**:这可能是后端处理登录逻辑的控制器类,负责接收前端请求,进行授权码验证及微信登录操作。 - **ChatMessageHandler.java**:WebSocket的处理器类,用于处理来自客户端的消息,可能也包含发送...
最后,`wxLogin`这个文件可能是实现微信登录功能的代码示例或者相关配置文件,建议仔细研究其中的逻辑和结构,以便更好地理解和实施微信登录功能。在实际开发中,可以结合Spring Boot、Spring Security等框架来简化...
springboot项目java开发微信公众号,有网页授权、事件推送、获取用户信息、图片、语音、文字、百度翻译接口,配置好可直接启动,项目内有详细注释
- **Spring Boot框架**:Java微信小程序的后端通常采用Spring Boot作为基础框架,提供快速开发、自动配置和微服务支持。 - **RESTful API设计**:为了与微信小程序前端进行数据交互,后端需要提供符合RESTful规范...
java 微信公众号开发 # Javen 微信公众号极速开发 实现微信登录,微信支付等接口 配置用户信息成为开发者,授权获取用户信息等邮箱注册、找回密码等
1. **微信配置**:源码会包含微信AppID和AppSecret的配置,这是接入微信接口的基础。 2. **OAuth2.0授权**:获取access_token的逻辑,包括获取code、用code换取access_token以及刷新token的逻辑。 3. **语音文件接收...