(一)引入maven配置

 <dependency>
<groupId>com.github.liyiorg</groupId>
<artifactId>weixin-popular</artifactId>
<version>2.8.</version>
</dependency>

(二)编写controller

  • 前端传递过来一个code字段,popular框架自主完成以下的操作

    @Controller
    @RequestMapping(value = "/weixin")
    public class WeiXinLogin {
    @Autowired
    private UserService userService;
    //固定
    private String appId="wxf51";
    private String appSecret="34b625fa6afd86693325c84"; //访问此资源的url: http://localhost:8090/weixin/wxLogin.json
    @RequestMapping(value = "/wxLogin", produces = MediaType.APPLICATION_JSON_VALUE)
    public void wxreg(ModelMap result,HttpServletRequest request, String code){ //1,获取凭证信息
    SnsToken token = SnsAPI.oauth2AccessToken(appId, appSecret, code);
    //依据凭证信息判断用户是否用微信注册账户?
    String openid = token.getOpenid();
    System.out.println("+++++++++++++++++++++openId=:"+openid);
    User userLogin = new User();
    userLogin.setOpenId(openid);
    userLogin = userService.getUserByExample(userLogin);
    if (userLogin == null){//用户没有使用微信注册过用户信息 //2,服务器收到用户的登录请求,向微信开放平台发送access_token是否有效的验证请求
    BaseResult baseResult = SnsAPI.auth(token.getAccess_token(), token.getOpenid());
    if("0".equals(baseResult.getErrcode()) && "ok".equals(baseResult.getErrmsg())){ //3,服务端获取到新的access_token等信息,并返回给客户端,客户端成功登录或者重新获取授权。
    weixin.popular.bean.user.User user = SnsAPI.userinfo(token.getAccess_token(), token.getOpenid(), "zh-CN");
    System.out.println("user: " + user.toString());
    result.put("code",200);
    result.put("msg","成功获得微信登录信息");
    result.put("data",user);
    User userInSert = new User();
    //待添加其他属性
    userInSert.setOpenId(user.getOpenid());
    userInSert.setNickname(user.getNickname());
    userInSert.setSex(user.getSex());
    userInSert.setProvince(user.getProvince());
    userInSert.setCountry(user.getCountry());
    userInSert.setCity(user.getCity());
    userInSert.setAvatar(user.getHeadimgurl());
    userInSert.setLoginName(user.getNickname());
    userService.addUser(userInSert);//添加该用户到数据库
    userInSert = userService.getUserByExample(userInSert); System.out.println("+++++++++++++++++++userInsert="+userInSert.toString()); request.getSession().setAttribute("users",userInSert);
    result.put("code",200);
    result.put("msg","微信绑定成功!");
    result.put("data",userInSert);
    }else{
    result.put("code",302);
    result.put("msg","获得微信登录用户失败");
    }
    }else{
    request.getSession().setAttribute("users",userLogin);
    System.out.println("登录成功!"+userLogin.toString());
    result.put("code",200);
    result.put("msg","登录成功!");
    result.put("data",userLogin);
    }
    }
    }

APP微信登录---第三方登录的更多相关文章

  1. iOS微信实现第三方登录的方法

    这篇文章主要介绍了iOS微信第三方登录实现的全过程,一步一步告诉大家iOS微信实现第三方登录的方法,感兴趣的小伙伴们可以参考一下   一.接入微信第三方登录准备工作.移动应用微信登录是基于OAuth2 ...

  2. 拾人牙慧篇之———QQ微信的第三方登录实现

    一.写在前面 关于qq微信登录的原理之流我就不一一赘述了,对应的官网都有,在这里主要是展示我是怎么实现出来的,看了好几个博客,有的是直接复制官网的,有的不知道为什么实现不了.我只能保证我的这个是我实现 ...

  3. Android通过微信实现第三方登录并使用OKHttp获得Token及源码下载

    这里对于App在微信开放平台上申请AppID和secret在这里就略过了,我们微信的授权登录流程,腾讯官网给的流程如下: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用 ...

  4. 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)

    前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...

  5. Android 实现QQ、微信、新浪微博和百度第三方登录

    前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...

  6. IOS 集成第三方登录

    我使用的是友盟上集成的第三方登录功能,一共使用了三个应用的登录授权,QQ.微信.新浪微博.由于第三方登录授权成功后,需要跳转到一个新的界面,所以这里需要在项目里设置第三方登录的SSO授权.就是必须安装 ...

  7. Android-友盟第三方登录与分享

    ### 前言 最近项目中又一次需要集成友盟的三方登录与分享,之前没有记录过,所以这次来写一下... ### 准备工作 1.注册友盟账号创建应用,获取key:申请地址http://www.umeng.c ...

  8. [Next] Next.js+Nest.js实现GitHub第三方登录

    GitHub OAuth 第三方登录 第三方登录的关键知识点就是 OAuth2.0 . 第三方登录,实质就是 OAuth 授权 . OAuth 是一个开放标准,允许用户让第三方应用访问某一个网站的资源 ...

  9. 微信公众号与APP微信第三方登录账号打通

    一个项目同时开发了APP和微信服务号,需要做到APP和微信服务号的账号互通同步,也就是说一个账号在2个地方都可以用,当然这个前提是保证你公司自己的服务器的数据库用的是同一套. 为保证用户数据的唯一性, ...

随机推荐

  1. 【DUBBO】 Dubbo原理解析-Dubbo内核实现之基于SPI思想Dubbo内核实现

    转载:http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577235 SPI接口定义 定义了@SPI注解 public @interfa ...

  2. SQL 中nvarchar和varchar到底能存多少汉字和英文

    实践出真知,在SQL中,nvarchar(50)表示汉字和英文都是50,varchar(50)汉字25,英文50

  3. p2p通信原理及实现(转)

    1.简介 当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信.这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还 ...

  4. input type=number 禁止输入字符“e”的办法

    输入框input,的type设置为number,本想只输入数字,但是字符“e”却能通过, 首先科普一下, <body> <input onkeypress="getCode ...

  5. golang里面检测对象是否实现了接口的方法

    写法有点怪异,记一下吧 _, implemented := this.delegate.(IGenTcpServerDelegate) if implemented { this.delegate.G ...

  6. JVM内存管理之JAVA语言的内存管理概述

    引言 内存管理一直是JAVA语言自豪与骄傲的资本,它让JAVA程序员基本上可以彻底忽略与内存管理相关的细节,只专注于业务逻辑.不过世界上不存在十全十美的好事,在带来了便利的同时,也因此引入了很多令人抓 ...

  7. 使用GDI+保存带Alpha通道的图像(续)

    之前结合网上的一些代码及ATL::CImage的实现,自己写了一个将HBITMAP以PNG格式保存到文件到函数.见上一篇日记. 不过,后来换了个环境又发现了问题,昨天和今天上午把<Windows ...

  8. appium+python自动化29-toast

    注意 toast要appium1.6.3以上版本才支持,appium1.4的版本就别浪费时间了 Supported Platforms 1.查看appium v1.7版本官方文档 Supported ...

  9. AngularJS.js: 杂项

    ylbtech-AngularJS.js: 杂项 AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前端JS框架,已经被用于Google的多 ...

  10. PDA后台运行、安装程序

    ////启动最新版本安装(后台安装模式),结束更新程序            //string cabPath = @"\Application Data\QY.DDM.PDA.CAB&qu ...