/**
* qq登录数据验证
* @param code
* @param map
* @param session
* @param request
* @return
*/
@SuppressWarnings
(
"unchecked"
)
@RequestMapping
(
"qq/authorizationCode"
)
public
String qqAuthorizationCode(String code,ModelMap map,HttpSession session,HttpServletRequest request){
if
(session.getAttribute(
"openId"
)==
null
){
OauthConfig oc=oauthService.getOauthConfig(
"qq"
);
String url=String.format(
"%s?grant_type=authorization_code&client_id=%s&client_secret=%s&code=%s&state=%s&redirect_uri=%s"
,oc.getTokenUrl(),oc.getClientId(),oc.getClientSecret(),code,UUID.randomUUID().toString(),oc.getRedirectUri());
DefaultHttpClient httpclient = HttpClientUtils.getHttpClient();
Map<String,String> obj=
null
;
String openid=
null
;
try
{
String request_token = HttpClientUtils.getHtml(httpclient, url,
"UTF-8"
);
System.out.println(request_token);
HashMap<String, String> access_token = ParseString.parseTokenString(request_token);
String url2=String.format(
"%s?access_token=%s"
,oc.getMeUrl(),access_token.get(
"access_token"
));
String s = HttpClientUtils.getHtml(httpclient, url2,
"UTF-8"
);
openid=s.substring(s.indexOf(
"\"openid\":\""
)+
10
,s.indexOf(
"\"}"
));
System.out.println(HttpClientUtils.getHtml(httpclient, url3,
"UTF-8"
));
obj=JsonUtil.conventJsonToObject(HttpClientUtils.getHtml(httpclient, url3,
"UTF-8"
), Map.
class
);
}
catch
(Exception e) {
e.printStackTrace();
}
map.addAttribute(
"w"
,webConfigDAO.findById(
"1"
));
if
(oauthService.getByOpenId(openid,
1
)!=
null
){
try
{
if
(oauthService.oauthLogin(openid,
1
, session,request)){
return
"/WEB-INF/cms/system/member/loginCallback.html"
;
}
}
catch
(MessageException e) {
e.printStackTrace();
map.addAttribute(
"msg"
, e.getMessage());
return
"/WEB-INF/cms/system/member/memberError.html"
;
}
}
session.setAttribute(
"openId"
, openid);
session.setAttribute(
"loginType"
,
1
);
session.setAttribute(
"userInfo"
,
new
String[]{obj.get(
"nickname"
),obj.get(
"gender"
),obj.get(
"figureurl_1"
),obj.get(
"figureurl_2"
)});
}
else
{
session.removeAttribute(
"openId"
);
session.removeAttribute(
"loginType"
);
session.removeAttribute(
"userInfo"
);
}
return
"/WEB-INF/cms/system/member/oauthPage.html"
;
}
相关推荐
4. **第三方登录API集成**:QQ和微信都提供了开放平台API,允许开发者通过OAuth2.0授权协议实现第三方登录。项目中,开发者需要注册应用,获取AppID和AppKey,然后在用户同意授权后,通过这些ID和Key获取到用户的...
在处理请求的过程中,`spring-context-support`提供了对第三方库如Quartz(调度)、JMS(消息传递)和邮件服务的支持。而`spring-aop`和`spring-aspects`则是AOP相关,用于实现切面和通知,增强了代码的可维护性和可...
Java开发者通常会利用Spring Security或Spring Social框架来实现第三方登录。在Spring Security中,你可以配置OAuth2客户端和服务提供者的详细信息。Spring Social则为与社交网络的API交互提供了简单易用的抽象层。 ...
这篇教程“spring-mvc-qq-weibo:spring-mvn 第三方登录整合”显然关注的是如何在Spring MVC项目中整合QQ和微博的登录服务。下面将详细介绍这个过程涉及的关键知识点: 1. **Spring MVC**:Spring MVC是Spring框架的...
这些库通常包括Spring的核心模块、Spring Web MVC模块以及其他与Web开发相关的第三方库。现在,让我们详细探讨这些关键知识点: 1. **Spring核心模块**:Spring框架的基础,提供了依赖注入(Dependency Injection, ...
这个压缩包可能包括了Spring MVC本身,以及其依赖的Spring Framework其他模块和其他第三方库。 **Spring MVC 知识点:** 1. **组件解析**:Spring MVC的核心组件包括DispatcherServlet、Controller、ViewResolver...
在Web应用开发中,OAuth2.0常被用来实现社交网络平台(如QQ、新浪、百度、人人网、OSC开源中国、豆瓣等)的第三方登录功能。这种登录方式被称为“单点登录”或“统一认证”,因为它允许用户通过一个账号登录多个关联...
报表统计部分,可以嵌入第三方报表工具,增强数据分析能力。系统还集成了开源的互动地图库Leaflet,用于处理自定义在线地图,增强了地理信息的展示效果。 总的来说,这个通用后台管理系统是一个功能全面、技术先进...
在本项目中,我们主要探讨的是基于Spring Boot 2、Spring MVC和第三方登录集成的现代化Web应用程序开发。这个实例还涵盖了多数据源处理、Druid数据连接池、MySQL数据库、定时任务以及代码生成器,旨在提供一个高效且...
这个过程涉及到网络请求,通常可以使用HttpURLConnection或者第三方库如OkHttp来完成。获取到Access Token后,可以调用腾讯提供的API获取用户信息,如openid,昵称,头像等。这些信息可以存储在数据库中,用于后续的...
支付处理可能涉及第三方支付接口的集成,如支付宝或微信支付,这部分需要处理好安全性与合规性问题。 在系统设计时,我们可以采用MVC(Model-View-Controller)架构模式,将业务逻辑、视图展示和控制逻辑分离,使得...
- **支付接口**:与第三方支付平台的集成,如支付宝、微信支付。 综上所述,基于MVC架构的网上商城项目通过合理的分工,提高了代码的可读性和可维护性,同时也使得开发过程更加高效。通过选择合适的开发框架,可以...
例如,可以使用OAuth2 实现第三方登录,Spring Security 处理内部认证和授权。 2. **授权服务器**:Spring Security 提供OAuth2 提供者支持,可以搭建自己的授权服务器,实现令牌的颁发和验证。 3. **保护API**:在...
在5.2.8中,这些集成得到了更新,以兼容最新的第三方版本,确保了整体项目的兼容性。 9. **文档和社区**: Spring官方文档在5.2.8版本中也进行了更新和完善,提供了详尽的教程和参考指南。同时,Spring社区活跃,...
- **用户认证与授权**:系统可能使用Java Security API或第三方库如Spring Security,来处理用户的登录、注册、权限控制等。 - **消息传输**:可以使用Java的Socket编程或者基于HTTP的RESTful API实现客户端与...
- OAuth2协议可能被用于第三方登录集成,如微信、QQ等,增强用户体验。 5. **RESTful API设计** - 采用RESTful风格设计API接口,遵循HTTP协议,使系统更符合Web服务标准,方便前后端分离开发。 6. **前端技术...
- `lib` 目录:可能包含所有必需的第三方库 JAR 文件。 通过这个压缩包,开发者可以快速地在项目中引入 Spring Framework,并根据需要选择相应的模块。此外,对于学习和研究 Spring 框架的内部工作原理,源代码也是...
1. **轻量级**:SpringMVC非常轻量,几乎不依赖其他第三方库。 2. **灵活性**:SpringMVC提供了一种灵活的方式来构建Web应用。 3. **易于测试**:SpringMVC的设计使得单元测试变得更加容易。 4. **与Spring无缝集成*...
3. **spring-context.jar**:扩展了Spring的核心容器,添加了对国际化、事件传播、资源加载以及与第三方框架集成的能力。 4. **spring-aop.jar**:实现面向切面编程的模块,提供声明式事务管理和代理实现。 5. **...