文档章节

传统SSM框架之微信授权登陆

木九天
 木九天
发布于 11/15 10:21
字数 487
阅读 26
收藏 0

1、jdbc.properties

(下面瞎写的值)

WEIXIN_APP_ID=wx5438496a99c8d26acb
WEIXIN_APP_SECRET=d070fjcwiefhwr38942dw

2、获取配置属性

/**
 * @Author:Mujiutian
 * @Description:微信参数
 * @Date: Created in 下午2:50 2018/11/7
 */
public class WeiXinConfig {

    private Logger logger = LoggerFactory.getLogger(getClass());

    private static final String DEFAULT_PROPERFILES = "properties/application.properties";

    //https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
    public static String WEIXIN_APP_GET_ACCESSTOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?";

    //https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
    public static String WEIXIN_APP_GET_REFRESHTOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/refresh_token?";

    //https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID
    public static String WEIXIN_APP_TEST_ACCESSTOKEN_URL = "https://api.weixin.qq.com/sns/auth?";

    //https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID
    public static String WEIXIN_APP_GET_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?";

    public static String WEIXIN_APP_ID;

    public static String WEIXIN_APP_SECRET;

    public static String WEIXIN_AUTOREPLY_TOKEN;

    public static String WEIXIN_AUTOREPLY_ENCODINGAESKEY;
    //证书存放路径
    public static String WEIXIN_SHOP_CERT_FILE_PATH;

    static {
       try {
           Resource resource = new ClassPathResource(DEFAULT_PROPERFILES);
           Properties proper = PropertiesLoaderUtils.loadProperties(resource);
           WEIXIN_APP_ID     = proper.getProperty("WEIXIN_APP_ID");
           WEIXIN_APP_SECRET = proper.getProperty("WEIXIN_APP_SECRET");
       }catch (IOException e){
           e.printStackTrace();
       }
    }

}

3、controller远程调用

(下面方法都需要远程调用才可以,没写)

/**
 * @Author:Mujiutian
 * @Description:
 * @Date: Created in 上午9:51 2018/11/7
 */
@Controller
@RequestMapping(value = "/member/weixin")
public class WeiXinLoginController {

    private Logger logger = LoggerFactory.getLogger(WeiXinLoginController.class);

    public static final String APP_ID            = WeiXinConfig.WEIXIN_APP_ID;

    public static final String APP_SECRET        = WeiXinConfig.WEIXIN_APP_SECRET;

    public static final String ASSCESS_TOKEN_URL = WeiXinConfig.WEIXIN_APP_GET_ACCESSTOKEN_URL;

    public static final String REFRESH_TOKEN_URL = WeiXinConfig.WEIXIN_APP_GET_REFRESHTOKEN_URL;

    public static final String EXAMINE_TOKEN_URL = WeiXinConfig.WEIXIN_APP_TEST_ACCESSTOKEN_URL;

    public static final String GET_USERINFO_URL  = WeiXinConfig.WEIXIN_APP_GET_USERINFO_URL;

    /**
     *
     * @Description:移动应用端:用户授权,通过code获取微信access_token
     * @Date:2018/11/7 下午2:30
     * @Author:Mujiutian
     * @UpdateRemark:
     * @Version:1.0
     *
     */
    @RequestMapping(value = "/getWeixinAccessToken.html")
    public String getWeixinAccessToken(String code){

        String url = ASSCESS_TOKEN_URL+"appid="+APP_ID+"&secret="+APP_SECRET+"&code="+code+"&grant_type=authorization_code";
        String result = HttpClientUtil.doGet(url);
        return result;
    }

    /**
     *
     * @Description:重置acess_token
     * @Date:2018/11/7 下午2:36
     * @Author:Mujiutian
     * @UpdateRemark:
     * @Version:1.0
     *
     */
    @RequestMapping(value = "/getRefreshAccessToken.html")
    public String getRefreshAccessToken(String refreshToken){

        String url = REFRESH_TOKEN_URL+"appid="+APP_ID+"&grant_type=refresh_token"+"&refresh_token="+refreshToken;

        String result = HttpClientUtil.doGet(url);

        return result;
    }

    /**
     *
     * @Description:检验access_token是否有效
     * @Date:2018/11/7 下午4:00
     * @Author:Mujiutian
     * @UpdateRemark:
     * @Version:1.0
     *
     */
    @RequestMapping(value = "/examineAccessToken.html")
    public String examineAccessToken(String accessToken,String openid){

        String url = EXAMINE_TOKEN_URL+"access_token="+accessToken+"&openid="+openid;

        String result = HttpClientUtil.doGet(url);

        return result;
    }

    /**
     *
     * @Description:通过openid、access_token获取微信用户基本信息
     * @Date:2018/11/7 下午2:41
     * @Author:Mujiutian
     * @UpdateRemark:
     * @Version:1.0
     *
     */
    @RequestMapping(value = "/getUserInfo.html")
    public String getUserInfo(String accessToken,String openid){

        String url = GET_USERINFO_URL+"access_token="+accessToken+"&openid"+openid;

        String result = HttpClientUtil.doGet(url);

        return result;
    }
}

 

 

 

© 著作权归作者所有

共有 人打赏支持
木九天

木九天

粉丝 93
博文 189
码字总数 125958
作品 0
海淀
程序员
私信 提问
laravel5实现微信第三方登录功能

背景 最近手头一个项目需要实现用户在网站的第三方登录(微信和微博),后端框架laravel5.4。 实现过程以微信网页版第三方登录,其他于此类似,在此不做重复。 准备工作 网站应用微信登录是基于...

开元中国2015
12/07
0
0
Springmvc中拦截器的一个问题

我使用的是ssm框架,设置了一个登陆拦截器, 这个拦截器我并没有让它拦截跟微信相关的restful风格的接口, 请求方式是get,我在谷歌浏览器中,直接输入url接口地址是直接给我返回一个错误页面...

aishang999
11/28
11
0
django 微信登陆的两种形式

路径:【管理后台】-【系统】-【用户设置】-【登陆】-【微信】 微信登陆有四个方式:微信网页登录、微信内分享登录、手机浏览器微信登录、手机APP微信登录。 微信网页登录与微信内分享登陆的...

飞儿飞
2016/11/14
125
0
springmvc学习笔记(20)-拦截器

springmvc学习笔记(20)-拦截器 标签: springmvc [TOC] 本文主要介绍springmvc中的拦截器,包括拦截器定义和的配置,然后演示了一个链式拦截的测试示例,最后通过一个登录认证的例子展示了拦...

brianway
2016/03/16
113
0
html5+ & mui框架 微信授权登录无响应,不回跳APP

微信授权登录可以调起微信,但是在微信上点击确认登陆后无响应,不跳回到APP。 问题解决方法: 1. 参考文章做排除:http://ask.dcloud.net.cn/article/309 2. 我遇到的问题是因为下图第3部的...

coton_chen
10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

etcd集群备份和数据恢复

etcd是一个分布式k-v数据库,在kubernetes中使用其管理集群的元数据。这里介绍etcd集群数据的备份和数据恢复的方法和步骤。 本文来自于:https://www.maideliang.com/index.php/archives/25/...

openthings
9分钟前
0
0
「阿里面试系列」面试加分项,从JVM层面了解线程的启动和停止

文章简介 这一篇主要围绕线程状态控制相关的操作分析线程的原理,比如线程的中断,线程的通信等,内容比较多,可能会分两篇文章 阿里面试系列导读:关注我的技术公众号【架构师修炼宝典】一周...

Java架构资源分享
16分钟前
1
0
centos安装confluence全攻略

https://blog.csdn.net/qwer026/article/details/51439076

happyeveryday32
30分钟前
3
0
30 行 Javascript 代码搞定智能家居系统

本文首发于『阿里云 IoT 开发者社区』,更多精彩物联网内容欢迎前往浏览。 智能家居可谓是今年物联网的热门领域,通过智能单品和智能音箱,人们已然把『智能』两个字变成了生活的理所应当。搭...

阿里云官方博客
33分钟前
4
0
sed插入和附加文本基础使用

对于编辑器来说,在数据中增加行算是很基本的操作吧,sed有以下两个操作: 插入(insert)命令(i)会在指定行前增加一个新行 附加(append)命令(a)会在指定行后增加一个新行 还是用下面的文本来测...

woshixin
41分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部