(一)引入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. vue a href="tel" 拨打电话

    走默认的方式失败 <a href="tel:{{telPhone}}">{{telPhone}}</a> 走字符串拼接方法成功 <a :href=&q ...

  2. bzoj1089严格n元树

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1089 这是一种套路:记录“深度为 i ”的话,转移需要讨论许多情况:所以可以记录成“深度&l ...

  3. Request.UrlReferrer详解

    使用前需要进行判断: if (Request != null && Request.UrlReferrer != null && Request.UrlReferrer ...

  4. Android Java访问本地方法(JNI)

    当功能需要本地代码实现的时候,Java 代码就需要调用本地代码. 在调用本地代码时,首先要保证本地代码被加载到 Java 执行环境中并与 Java 代码连接在一起,这样 Java 代码在调用本地方法时 ...

  5. RK3288 制作内核开机logo

    安装工具 sudo apt-get install netpbm 1.制作图片 (1).图片为bmp格式 $ convert logo.bmp logo.png $ pngtopnm logo.png ...

  6. wdlinux中apache配置反向代理模块

    想要在.htaccess中开启反向代理功能都不行[apache中没有mod_proxy模块] .htaccess 文件内容如下 RewriteEngine On RewriteBase / Rewri ...

  7. TCP 、UDP、IP包的最大长度

    1.概述 首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层. 其中以太网(Ethernet)的数据帧在链路层 IP包在网络层 TCP或UDP包在传输层 TCP或UDP中的数据(Da ...

  8. C++使用回溯法实现N皇后问题的求解

    回溯法是个很无聊的死算方法,没什么技巧,写这篇博客主要原因是以前思路不太清晰,现在突然想用回溯法解决一个问题时,无法快速把思路转换成代码. ------------------------------ ...

  9. 将socket程序从linux移植到windows上

    今天突然想试下纯socket编程在两个系统上代码重合量有多大,只要不使用VC自定义的宏(比如SOCKET.SOCKADDR等等)感觉代码重合量挺大的. 比如最简单的TCP客户端和服务端对话,在VC中用 ...

  10. String笔试面试题

    Java中String类由于其特殊性(不变类),几乎是笔试面试中的必考题,当然有些题目其实没啥意思,不过关键是要通过题目掌握原理性的东西.下面六道题目,如果您全部做对了,且明白其所以然,那么Java中 ...