一、概述
根据需求,需要拥有第三方微信登录功能,并获取到用户信息。
网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。
二、前期准备工作
1、注册邮箱账号。
2、根据邮箱账号注册微信开放平台账号,完善开发者资料。
3、申请开发者资质认证、填写相关资料、填写发票、支付认证金额。提交并等待认证结果
1)申请开发者资质认证
2)选定类型
3)填写“认证资料”
4)填写“管理员信息”
5)上传“企业基本信息”材料:
6)进入填写发票及支付费用
4、认证成功后,创建网站应用,填写基本信息、下载网站信息登记表填写并上传扫描件、填写授权回调域等。提交审核等待结果。
1)创建网站应用
2)创建移动应用
5、认证成功后,创建移动应用,至少选择安卓、IOS、WP8其中一种平台
6、创建应用成功后,申请微信登陆,等待审核结果,待审核通过后,可进行微信登陆的开发。
注:创建应用和开发者资质认证可同时进行

准备工作大致流程图
三、开发流程
1)第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2)通过code参数加上AppID和AppSecret等,通过API换取access_token;
3)通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。

四、具体实现步骤
1、准备工作
1)添加依赖
<!-- 添加httpclient支持 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
2)配置文件
## 微信开放平台
wechat:
open:
# APPID
appid: ******
# APPSECRET
appsecret: ******
# 回调地址
redirect_uri: http://de43f7.39nat.com
3)实体类
/**
*
* @author: xxm
* 功能描述: access_token封装基础类
* @date: 2021/2/2 10:41
*/
@Data
public class Token {
private String openid; //授权用户唯一标识
private String accessToken; //接口调用凭证
private Integer ExpiresIn; //access_token接口调用凭证超时时间,单位(秒)
}
/**
*
* @author: xxm
* 功能描述: 微信与网站绑定关系表
* @date: 2021/2/1 17:08
*/
@Data
@Table(name = "UserWeChat")
@NameStyle(Style.normal)
public class UserWeChat implements Serializable {
private static final long serialVersionUID = 8997358443007506192L;
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
//用户id
private Integer userId;
//微信OpenId
private String openId;
//昵称
private String nickName;
}
/**
*
* @author: xxm
* 功能描述: access_token封装基础类
* @date: 2021/2/2 10:41
*/
@Data
public class Token {
private String openid; //授权用户唯一标识
private String accessToken; //接口调用凭证
private Integer ExpiresIn; //access_token接口调用凭证超时时间,单位(秒)
}
4)微信工具类
/**
*
* @author: xxm
* 功能描述: 微信登录相关接口工具类
* @date: 2021/2/23 16:14
* @param:
* @return:
*/
public class WeChatCommonUtil {
private static Logger log = LoggerFactory.getLogger(WeChatCommonUtil.class);
/**
* @author: xxm
* 功能描述: urlEncodeUTF8工具类
* (用于将扫描二维码后重定向的资源url进行编码)
* @date: 2021/2/22 15:55
* @param:
* @return:
*/
public static String urlEncodeUTF8(String source) {
String result = source;
try {
result = java.net.URLEncoder.encode(source, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
/**
*
* @author: xxm
* 功能描述: 获取openid等信息的方法
* @date: 2021/2/22 17:52
* @param:
* @return:
*/
public static Token getTokenWithOpenid(String appid, String appsecret, String code) {
String findAccessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
Token token = null;

本文详细介绍了如何在网站应用中实现微信登录功能,包括注册、开发者认证、创建应用、获取code与access_token、用户信息获取,以及使用access_token进行后续操作的步骤。
最低0.47元/天 解锁文章
8344

被折叠的 条评论
为什么被折叠?



