新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
成都创新互联公司服务项目包括南城网站建设、南城网站制作、南城网页制作以及南城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,南城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到南城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!这篇文章将为大家详细讲解有关Java模拟实现QQ三方登录的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
本次例子模拟这样的情况:
一共有2个spring boot应用:
一个是某公司的web,第二个是QQ服务端。
某公司的应用为127.0.0.1:8082
QQ服务端为127.0.0.1:8081
演示如下:
点击使用QQ登录:
在弹出的界面输入数据点击登录后:
关键代码如下:
某公司web端:
MyController.java
package cn.it1995.login.controller; import cn.it1995.login.util.CookieUtil; import cn.it1995.login.util.Result; import com.alibaba.fastjson.JSON; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @RestController public class MyController { @Autowired private RestTemplate restTemplate; private static final String USER_KEY="user_key"; private ConcurrentMapuser = new ConcurrentHashMap<>(); @GetMapping("/getUser") public Object getUser(HttpServletRequest request, HttpServletResponse response){ String loginCookie = CookieUtil.getLoginCookie(request, response); Object o = user.get(loginCookie); return Result.success(o); } @PostMapping("/loginByQQ") public Object loginByQQ(String token, HttpServletResponse response, HttpServletRequest request){ MultiValueMap paramMap = new LinkedMultiValueMap(); paramMap.add("token", token); ResponseEntity