APP微信登录---第三方登录
(一)引入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微信登录---第三方登录的更多相关文章
- iOS微信实现第三方登录的方法
这篇文章主要介绍了iOS微信第三方登录实现的全过程,一步一步告诉大家iOS微信实现第三方登录的方法,感兴趣的小伙伴们可以参考一下 一.接入微信第三方登录准备工作.移动应用微信登录是基于OAuth2 ...
- 拾人牙慧篇之———QQ微信的第三方登录实现
一.写在前面 关于qq微信登录的原理之流我就不一一赘述了,对应的官网都有,在这里主要是展示我是怎么实现出来的,看了好几个博客,有的是直接复制官网的,有的不知道为什么实现不了.我只能保证我的这个是我实现 ...
- Android通过微信实现第三方登录并使用OKHttp获得Token及源码下载
这里对于App在微信开放平台上申请AppID和secret在这里就略过了,我们微信的授权登录流程,腾讯官网给的流程如下: 1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用 ...
- 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)
前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...
- Android 实现QQ、微信、新浪微博和百度第三方登录
前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppK ...
- IOS 集成第三方登录
我使用的是友盟上集成的第三方登录功能,一共使用了三个应用的登录授权,QQ.微信.新浪微博.由于第三方登录授权成功后,需要跳转到一个新的界面,所以这里需要在项目里设置第三方登录的SSO授权.就是必须安装 ...
- Android-友盟第三方登录与分享
### 前言 最近项目中又一次需要集成友盟的三方登录与分享,之前没有记录过,所以这次来写一下... ### 准备工作 1.注册友盟账号创建应用,获取key:申请地址http://www.umeng.c ...
- [Next] Next.js+Nest.js实现GitHub第三方登录
GitHub OAuth 第三方登录 第三方登录的关键知识点就是 OAuth2.0 . 第三方登录,实质就是 OAuth 授权 . OAuth 是一个开放标准,允许用户让第三方应用访问某一个网站的资源 ...
- 微信公众号与APP微信第三方登录账号打通
一个项目同时开发了APP和微信服务号,需要做到APP和微信服务号的账号互通同步,也就是说一个账号在2个地方都可以用,当然这个前提是保证你公司自己的服务器的数据库用的是同一套. 为保证用户数据的唯一性, ...
随机推荐
- 浅谈ES6新特性
ES6的了解 新增模板字符串(为JavaScript提供了简单的字符串插值功能).箭头函数(操作符左边为输入的参数,而右边则是进行的操作以及返回的值Inputs=>outputs.).for-o ...
- windows 2016 dockerfile 以及简单使用
Docker 引擎包含用于自动创建容器映像的工具. 尽管可以使用 docker commit 命令手动创建容器映像,然而采用自动映像创建过程可获得许多好处,其中包括: 将容器映像存储为代码. 可出于维 ...
- c/c++指针详解(二)
指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址.要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占 ...
- docker 镜像导入导出[转]
0)查看镜像id sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/calico/node v1.0.1 c70511a4 ...
- netstat 命令 与 ss 命令
http://www.cnblogs.com/peida/archive/2013/03/11/2953420.html http://www.ttlsa.com/linux-command/ss-r ...
- Asp.net中的web.config配置文件(转)
最近开始学习.NET的开发,首先碰到的就是web.config的配置问题,把网上大虾的资料转发记录一下,以备不时之需. 原贴路径如下:http://blog.csdn.net/hbqhdlc/arti ...
- appium+python自动化30-list定位(find_elements)
前言 有时候页面上没有id属性,并且其它的属性不唯一,平常用的比较多的是单数(element)的定位方法,遇到元素属性不唯一,就无法直接定位到了. 于是我们可以通过复数(elements)定位,先定位 ...
- ECMAScript有6种继承方式(实现继承)
本人对于ECMAScript继承机制有些见解,如果说的不对,敬请赐教~~~~ 继承是OO语言(面向对象)挺好的概念,许多OO语言都支持两种继承方式(接口只继承方法签名.实际继承则继承实际的方法),但是 ...
- Hadoop单机环境搭建整体流程
1. Ubuntu环境安装和基本配置 本例程中在MAC上安装使用的虚拟机Ubuntu系统(64位,desktop): 基本配置 考虑到以后涉及到hadoop的应用便于权限的管理,特别地创建一个ha ...
- kubernetes 学习 service相关
1: service有什么用? 直接通过Pod的IP地址和端口号可以访问容器应用,但是pod的IP地址是不可靠的,比如POD出现故障后,有可能在另外一个NOde上启动,这样Pod的IP ...