QQ的第三方登陆,操作步骤
1,到 https://connect.qq.com QQ互联管理中心的"应用管理"申请QQ的app_id和app_key,提前提交你需要回调的地址.
2,配置申请下来的的appid和appkey,及回调地址
3,获取配置文件中appid和appkey,机会掉地址,代码如下:
package com.yst.wallet.common; import java.util.Properties; import org.apache.log4j.Logger; /** private static final Logger logger = Logger.getLogger(Config.class.getName()); public static String qq_app_id; /** /** logger.info(" qq_app_id=" + qq_app_id); |
4,编写controller代码(回调地址),通过appid,appkey和回调地址获取access_token,open_id然后获取qq的用户信息
/** * 采用QQ三方登陆之后的回调地址 * @param login_token * @return * @throws Exception */ @RequestMapping(value="/isajax/OAuth2Login/QQLoginResponseProcess") public ModelAndView qqLoginCallBack(@RequestParam(required=false) String code, @RequestParam(required=false) String state){ String path = CLASS_PATH + "/" + Thread.currentThread().getStackTrace()[1].getMethodName(); LogUtils.putRequestLog("qq第三方登录的回调", path,this.getPageData()); ModelAndView mv = this.getModelAndView(); if(StringUtils.isNotBlank(code)){ try { //1,获取access_token String token = QQLoginUtil.getAccessToken(code); //2,获取openId String openId = QQLoginUtil.getOpenid(token); if(StringUtils.isNotBlank(openId)){ //3.根据openid判断是不是绑定了,没有绑定,跳转到绑定页面 PageData pd = new PageData(); pd.put("login_type", "05");// 登录类型 05 国美在线 pd.put("login_name", openId);// 登录名 pd = new Epay_api_security().user_login(pd); if (Const.RETURN_SUCCESS.equals(pd.get("code"))) {// 请求成功,登录shiro,跳转到index页面 UserInfo user = (UserInfo) pd.get("data"); if (user != null) { user.setLast_login_time(DateFormatUtil.to_normal(user.getLast_login_time())); // 把用户信息放session中 Jurisdiction.getSession().setAttribute(Const.SESSION_USER, user); Jurisdiction.getSession().setAttribute(Const.LOGIN_TOKEN, user.getLogin_token()); //shiro加入身份验证 Subject subject = SecurityUtils.getSubject(); CaptchaUsernamePasswordToken logintoken = new CaptchaUsernamePasswordToken(token, token,"","","","",token,openId,""); try { subject.login(logintoken); } catch (Exception e){ e.printStackTrace(); mv.setViewName("redirect:/login_toLogin"); } mv.setViewName("redirect:/index");//跳转到首页 }else{ mv.setViewName("error"); mv.addObject("msg","用户信息为空,请稍后重试"); } }else{ String userInfo = QQLoginUtil.getQQUser(token, openId); mv.setViewName("redirect:/gomebangding");//跳转到首页 Jurisdiction.getSession().setAttribute(Const.GOME_OPENID, openId); Jurisdiction.getSession().setAttribute(Const.GOME_USER, userInfo); } }else{//{"error_code":3019,"error_description":"code值错误"} mv.setViewName("error"); mv.addObject("msg","腾讯QQ授权登录返回信息:"+openId); } } catch (ClientProtocolException e) { e.printStackTrace(); mv.setViewName("error"); mv.addObject("msg",e.getMessage()); } catch (IOException e) { e.printStackTrace(); mv.setViewName("error"); mv.addObject("msg",e.getMessage()); } }else{ mv.setViewName("error"); mv.addObject("msg","code值为空"); } return mv; } |
5,html页面调取qq的链接
<li class="qq_sign"><span title="QQ账号" href=""
οnclick="javascript:document.location='https://graph.qq.com/oauth/show?which=ConfirmPage&display=pc&response_type=code&client_id=${qq_app_id}&redirect_uri=${qq_redirect_uri}&state=test'"></span></li>
6,QQLoginUtil.java
package com.yst.wallet.common.util; import java.io.IOException; import org.apache.http.client.ClientProtocolException; import com.yst.wallet.common.Config; public class QQLoginUtil { //获得AccessToken的url |
转载于:https://my.oschina.net/youngit/blog/1510666
QQ的第三方登陆,操作步骤相关推荐
- QQ互联第三方登陆 redirect uri is illegal(100010)
想必第一次大家接触QQ第三方登陆都会遇到各种各样的问题,备受折磨,因此,今天我把自己做QQ登陆的过程描述一下,希望给大家提供参考,少走弯路. 在开发之前,我们先了解下QQ登陆的流程 第一:查看熟悉 网 ...
- qq降龙电脑版_分享 | 如何利用QQ群上课 简单操作步骤
QQ群上课功能:可以直播,演示ppt,word,图片等:与学生互动交流:像课堂一样做标记. 使用QQ群上课步骤(文图版): 建立班级科目QQ群(建议所有科目用一个,避免资源浪费). 打开QQ群界面,把 ...
- java qq授权登录开发者_Java QQ授权第三方登陆
QQ互联官网 注册开发者,创建应用,创建好的应用我们有我们需要的三个参数,APPID.APPKey.回调地址 APPID.APPKey.回调地址.png 这里验证不需要通过,随便填做测试就可以,等上线 ...
- springSecurity的学习笔记--使用spring-Security完成表单登陆,手机验证码登陆,第三方登陆
环境搭建好后,之后的练习进入了一个十分痛苦的阶段!! 但是与此同时,收获也是比较可观的. 老师通过详细的视频讲解,完成了表单登陆,包括账号密码和验证码登陆,手机验证码登陆,第三方登陆. 每一个部分都进 ...
- 实现QQ的第三方登录 iOS开发
现在大多数App在登录时候都会有第三方登录,如QQ,微信,微博等,如下面的截图 下面我们主要讲一下qq的第三方登陆如何实现 首先,到官网注册: 一,下载SDK 下载SDK 地址:http://wiki ...
- Oauth2.0 QQ微信微博实现第三方登陆
一.写在前面 目前对于大多数的App或Web网站都支持有第三方登陆这个功能,用户可使用 QQ/ 微信/ 微博 帐号快速登录你的网站,降低注册门槛,为你的网站带来海量新用户.最近在新项目上刚好用到了,在 ...
- android qq三方登录授权失败,QQ第三方登陆授权失败110401原因及解决办法分享
qq第三方登陆授权失败出现代码110401是什么情况?遇到这种情况该如何解决?相信很多用户们在操作的时候都出现过类似的情况吧?下面是小编带来的攻略解析,一起来关注下! qq第三方登陆授权失败11040 ...
- python的flask实现第三方登录怎么写_关于qq和新浪微博的第三方登陆|python|flask
前些日子研究了一下qq和新浪微博的第三方登陆的东西,发现其实难度并不大.来给大家分享一下我的经验和流程. 不论是qq还是新浪微博的第三方登陆都是用了Oauth2.0授权流程,唯一不同的是qq多了一个o ...
- 基于python的QQ第三方登陆实现工具类
基于python的QQ第三方登陆 在做第三方登陆时,一共有如下的步骤 首先我们要获取QQ服务器的登陆地址 用户进行登陆 QQ服务器返回用户的对应code给前端 前端将用户code传输到后端 服务器获取 ...
最新文章
- Python写入到csv文件存在空行的解决方法
- 发起http请求_关于HTTP请求发起和响应你了解多少
- LAMP 系统性能调优,第 3 部分: MySQL 服务器调优(转)
- 按钮点击没有反应_时控开关按键没反应怎么办?
- c语言可以利用数组处理批量数据库,C语言程序设计 利用数组处理批量数据.ppt...
- Multi-Armed Bandit--基于时变多臂老虎机的在线上下文感知推荐
- vscode常用emmet语法及快捷键
- python中__call__方法_Python中__call__用法实例
- android手机和荣耀哪个版本好,【求测评】荣耀v40轻奢版与荣耀X10哪款更好?图文爆料分析...
- Android开发 手机开发者模式
- linux网络端口失效( Device eth0 does not seem to be present,delaying initialization)解决方法
- oracle版本区别 win7_Oracle在Win7服务管理中消失的解决方法
- 为什么qq不出linux版本,腾讯QQ官方Linux版本要发布了
- WIN32 API GetLastError()返回值含义列表
- 汉堡按钮html写法,ProtoPie 详解 — 汉堡按钮制作
- 学习笔记(4):【数据分析实战训练营】 数据分析基础及方法论-row-column-len-lenb函数...
- CSS边框、边距、轮廓(边框宽度/颜色/各边/简写属性/圆角边框/内外边距/高度宽度/框模型/轮廓宽度/颜色/属性/偏移)——万字长文|一文搞懂
- 完成领导交代的任务并及时反馈,才叫真的完成任务
- 洛谷 P1426 小鱼会有危险吗
- Android经典项目案例开发实战宝典
热门文章
- 基于区块链的医疗记录存储系统研究与开发
- 最新水文水动力模型在城市内涝、城市排水、海绵城市规划设计中深度应用丨SWMM排水管网水力、水质建模及海绵与水环境应用
- bugku 手机号码破解WIFI密码
- 链接器都干了些什么?
- arcmap 警告位置空间参考或空间参考与数据框不匹配问题
- 在VScode里面添加Python解释器
- 文本分析算法简单介绍-1
- 罗胖发明的这个概念,可以解释整个互联网的下半场了
- 淘宝是如何实现高并发下抢单的锁单机制?
- c语言贪吃蛇添加排行榜,c语言贪吃蛇排行榜_...12年4月编程语言排行榜 C语言荣归宝座...