微信开放平台开发第三方授权登陆:微信扫码登录

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

一、概述

根据需求,需要拥有第三方微信登录功能,并获取到用户信息。
网站应用微信登录是基于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;
   	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值