利用Spring Social轻松搞定微信授权登录的方法示例

  

微信第三方登录有两种方式:扫码登录(微信开放平台)和公众号登录(微信公众平台)

  

扫码登录可以用于PC等跨平台应用,而公众平台必须在微信应用程序内使用,且必须关注公众号。

  

下面以公众平台为例,介绍如何基于Spring Social实现微信用户授权并获取到用户信息。(微信开放平台类似)

  

<强>第一步:到微信公众平台后台注册应用并进行相关设置

  

微信公众平台后台地址:https://mp.weixin.qq.com/

  

也可以先注册一个测试号:https://mp.weixin.qq.com/debug/cgi-bin/sandbox& # 63; t=沙箱/登录

  

用微信扫码登录后台后可以看到如下页面:

  

利用Spring Social轻松搞定微信授权登录的方法示例

  

其中的“appID”和“appsecret”需要记录下来,一会要用到。

  

滑到下方找到“网页授权获取用户基本信息 ",点击”修改 ",将自己测试服务器的域名或IP填上去:

  

利用Spring Social轻松搞定微信授权登录的方法示例

  

修改页面:

  

利用Spring Social轻松搞定微信授权登录的方法示例

  

<强>第二步:添加相关代码

  

我们假设服务端是基于springboot。

  

1。增加spring-social-wechat依赖:

  Maven:

        & lt; dependency>   & lt; groupId> com.ikasoa   & lt; artifactId> spring-social-wechat   & lt; version> 1.3.1   & lt;/dependency>      

或者Gradle:

        编译“com.ikasoa: spring-social-wechat: 1.3.1”      

2。增加配置项目

  

application.yml:

        春天:   社会:   wechatmp:   应用id (appID):   app-secret (appsecret):      

或者application.properties:

        spring.social.wechatmp.app-id=[appID]   spring.social.wechatmp.app-secret=[appsecret]      

其中“ appID ”和“ appsecret "可以从微信公众平台后台得到。

  

3。修改Application.java

  

增加注解@EnableSocial,并引用自动配置类(WechatMpAutoConfiguration.class):

  

Application.java         进口org.springframework.boot.SpringApplication;   进口org.springframework.boot.autoconfigure.SpringBootApplication;   进口org.springframework.context.annotation.Import;   进口org.springframework.social.config.annotation.EnableSocial;   进口org.springframework.social.wechat.autoconfigurer.WechatMpAutoConfiguration;      @SpringBootApplication   @EnableSocial   @ import (WechatMpAutoConfiguration.class)   公共类应用程序{      公共静态void main (String [] args){抛出异常   SpringApplication.run (Application.class, args);   }      }      

4。增加SignInAdapter并注册ProviderSignInController

  

SignInAdapter用来处理微信授权成功后的相关操作,例如:

  

WechatSignInAdapter.java         进口org.springframework.social.connect.Connection;   进口org.springframework.social.connect.ConnectionKey;   进口org.springframework.social.connect.web.SignInAdapter;   进口org.springframework.social.wechat.api.User;   进口org.springframework.social.wechat.api.Wechat;   进口org.springframework.stereotype.Component;   进口org.springframework.web.context.request.NativeWebRequest;      @ component   公共类WechatSignInAdapter实现SignInAdapter {      @Override   signIn公共字符串(字符串openId, Connection<& # 63;比;连接,NativeWebRequest请求){   ConnectionKey关键=connection.getKey ();//通过providerId判断是否为微信公众平台授权   如果(wechatmp .equalsIgnoreCase (key.getProviderId ())) {//通过微信openId获取到用户详细信息   用户用户=((微信)connection.getApi ()) .userOperations () .getUserProfile (openId);//微信用户详细信息,可以记录到数据库。这里直接打印到后台   System.out.println(用户);   返回"/success.htm”;//返回登录成功后跳转的url   }   返回"/error.htm”;   }      }      

利用Spring Social轻松搞定微信授权登录的方法示例