前言:如何快速接入第三方登录?无需第三方审核认证授权,一次性接入多个平台的解决方案,

此处实现使用SpringBoot+vue 实现此效果

1.申请接入应用

http://open.51094.com/


按需选择接入的类型

填写应用信息


完成应用创建后

2.前端配置

引入js

因为.vue文件中 只能存在一个<script>标签,那咋办?

使用编码声明的方式将js配置成一个组件

上面的src就是你应用的此处地址

在页面中编写此代码

//引入组件 相当于 引入<script> 引用js
<scriptLink></scriptLink>
//第三方应用图标渲染的位置
<span id="hzy_fast_login"></span>

出现此图标你就成功渲染成功了

但是。。。你会不会觉得这图标有点丑。想使用自己的样式


打开F12找到QQ的logo 查看此链接 放在你自己的图标上即可

3.后端配置

先写一下接入第三方配置

读取配置类

package com.github.ucenter.config;import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/**
* @author: lujie
* @create: 2020/3/30
* @description: ConstantPropertiesUtil
**/
@Component
public class ConstantPropertiesUtil implements InitializingBean {@Value("${oauth.appid}")private String oauthAppId;@Value("${oauth.token}")private String oauthToken;public static String OAUTH_APPID;public static String OAUTH_TOKEN;public static String OAUTH_TYPE;@Overridepublic void afterPropertiesSet() throws Exception {OAUTH_APPID = oauthAppId;OAUTH_TOKEN = oauthToken;OAUTH_TYPE ="get_user_info";}}

**创建HTTP 调用工具类 ,方便后面获取回调code 进行获取用户登录信息
**

package com.github.commonutils.utils;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;/**
* @author: lujie
* @create: 2020/4/19
* @description: HttpRequest
**/
public class HttpRequest {/*** 向指定URL发送GET方法的请求      ** * @param url      *            发送请求的URL      * @param param      *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。      * @return URL 所代表远程资源的响应结果*/public static String sendGet(String url, String param) {String result = "";BufferedReader in = null;try {String urlNameString = url + "?" + param;URL realUrl = new URL(urlNameString);// 打开和URL之间的连接URLConnection connection = realUrl.openConnection();// 设置通用的请求属性connection.setRequestProperty("accept", "*/*");connection.setRequestProperty("connection", "Keep-Alive");connection.setRequestProperty("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 建立实际的连接connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.out.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送GET请求出现异常!" + e);e.printStackTrace();}// 使用finally块来关闭输入流finally {try {if (in != null) {in.close();}} catch (Exception e2) {e2.printStackTrace();}}return result;}/*** 向指定 URL 发送POST方法的请求      *       * @param url      *            发送请求的 URL      * @param param      *            请求参数,请求参数应该是 name1=value1&name2=value2 的形式。      * @return 所代表远程资源的响应结果*/public static String sendPost(String url, String param) {PrintWriter out = null;BufferedReader in = null;String result = "";try {URL realUrl = new URL(url);// 打开和URL之间的连接URLConnection conn = realUrl.openConnection();// 设置通用的请求属性conn.setRequestProperty("accept", "*/*");conn.setRequestProperty("connection", "Keep-Alive");conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");// 发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);// 获取URLConnection对象对应的输出流out = new PrintWriter(conn.getOutputStream());// 发送请求参数out.print(param);// flush输出流的缓冲out.flush();// 定义BufferedReader输入流来读取URL的响应in = new BufferedReader(new InputStreamReader(conn.getInputStream()));String line;while ((line = in.readLine()) != null) {result += line;}} catch (Exception e) {System.out.println("发送 POST 请求出现异常!" + e);e.printStackTrace();}//使用finally块来关闭输出流、输入流finally {try {if (out != null) {out.close();}if (in != null) {in.close();}} catch (IOException ex) {ex.printStackTrace();}} return result;}
}

创建微信回调接口


要保证你填写的这个地址能访问到你的接口

**

package com.github.ucenter.controller;import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.commonutils.constants.CommonConstant;
import com.github.commonutils.utils.HttpRequest;
import com.github.commonutils.utils.JwtUtils;
import com.github.ucenter.config.ConstantPropertiesUtil;
import com.github.ucenter.entity.UcenterMember;
import com.github.ucenter.service.UcenterMemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/**
* @author: lujie
* @create: 2020/4/19
* @description: WeChatCallbackController 微信回调接口函数
**/
@Controller
@Slf4j
public class WeChatCallbackController {@Resourceprivate UcenterMemberService ucenterMemberService;@GetMappingpublic void WeChatCallback(@RequestParam("code") String code, HttpServletResponse response) throws IOException {log.info("=================================第三方登录唯一标识:"+code);String baseURL = "http://open.51094.com/user/auth.html";String params = "type=get_user_info&code="+code+"&appid="+ConstantPropertiesUtil.OAUTH_APPID+"&token="+ConstantPropertiesUtil.OAUTH_TOKEN;String result = HttpRequest.sendPost(baseURL, params);JSONObject jsonObject = JSONObject.parseObject(result);String name = jsonObject.getString("name");String img = jsonObject.getString("img");Integer sex = jsonObject.getInteger("sex");String from = jsonObject.getString("from");String openId = jsonObject.getString("uniq");UcenterMember user =null == ucenterMemberService.getByOpenId(openId)?new UcenterMember():ucenterMemberService.getByOpenId(openId);user.setNickname(name);user.setOpenid(openId);user.setAvatar(img);user.setSex(sex);/***新用户注册*/if(StrUtil.isBlank(user.getId())){user.setAge(CommonConstant.DEFAULT_AGE);ucenterMemberService.save(user);//登录}else {ucenterMemberService.updateById(user);}//此处跳转首页String token = JwtUtils.getJwtToken(user.getId(),user.getNickname());response.sendRedirect("http://127.0.0.1:3000?token="+token)  ;}}

有问题在底下留言!!!啾咪~

JAVA-快速接入第三方应用登录(QQ、微信、微博)相关推荐

  1. Oauth2.0 QQ微信微博实现第三方登陆

    一.写在前面 目前对于大多数的App或Web网站都支持有第三方登陆这个功能,用户可使用 QQ/ 微信/ 微博 帐号快速登录你的网站,降低注册门槛,为你的网站带来海量新用户.最近在新项目上刚好用到了,在 ...

  2. Java实现鼠标右键快捷保存QQ微信截图和复制的文字

    Java实现鼠标右键快捷保存QQ微信截图和复制的文字 首先,我们能实现保存剪贴板内容,以下是我的源代码和解释 import java.awt.*; import java.awt.datatransf ...

  3. 实现在App端授权qq/微信/微博登录

    App端登陆相关的SDK需要在manifest中配置: 打开 manifest.json -> App模块权限配置,勾选 OAuth(登陆鉴权). 打开 manifest.json -> ...

  4. 安卓三方登录趟坑,QQ,微信,微博,Twitter,Facebook,Instagram

    前言 最近给app加入三方登录,由于比较多,所以就用的友盟统一登录,会比一个一个配置方便点 正文 先说QQ,微信,微博: 国内QQ,微信,微博三方登录其实还行,并没有太多坑,文档也挺完善的. 但是需要 ...

  5. 近期你已经授权登录过_微信上怎么登录QQ 微信和qq有什么实质区别

    参加工作之后,大多数人都将自己常用的聊天软件换成了微信,QQ也渐渐不再使用.但是,QQ中基本上都是小学.初中.高中的好友以及同学,这些人的消息我们也是不想错过的.近期,有网友称微信上可登录QQ,那么微 ...

  6. 访问量分类统计(QQ,微信,微博,网页,网站APP,其他)

    刚准备敲键盘,突然想起今天已经星期五了,有点小兴奋,一周又这么愉快的结束,又可以休息了,等等..我好像是来写Java博客的,怎么变成了写日记,好吧,言归正传. 不知道大家有没有遇到过这样的需求:统计一 ...

  7. java qq微信微博第三方登录界面_android 实现第三方登录(微博、微信、QQ登录)

    [实例简介]此案例是演示案例,大家可以看到Bmob的第三方登录和信息获取如何工作的 实现了 qq.微信.微博的 第三方登录功能 [实例截图] [核心代码] package com.bmob.demo. ...

  8. Android三方登陆之QQ,微信,微博登录及注意事项

    简介 在我们的应用中,一般都有三方登录这个功能,对于这个常用的功能,我们一般会有如下处理方式 导入三方sdk,按照文档开发 使用如ShareSDK类三方组件来实现 ShareSDK 官方Demo: T ...

  9. QQ微信微博联合登录流程总结

    第三方联合登录一般可以降低网站的获客成本,所以一般的网站都会做一些联合登录,常用的就是QQ.微信.微博了,下面简单的介绍一下这些联合登录的方法. 看了一号店的QQ登录源码可知,点击图标直接访问的是这个 ...

最新文章

  1. 特征工程(七)SelectFromModel
  2. Jmeter Loadrunner高级性能测试真实曝光
  3. 采用三层架构(JAVA)设计学生管理系统
  4. elasticsearch之Recovery
  5. 条款20:为指针的关联容器指定比较类型
  6. 【iVX 初级工程师培训教程 10篇文拿证】07 08 新闻页制作
  7. [转]sql,N/$/#/@的含义和作用
  8. maven项目,如何导入本地jar包
  9. php 如何配置 redis,php 如何设置redis
  10. 变相裁员?人人车发奇葩通知:未离职员工每天打卡三次 只抄规则
  11. C中的volatile用法
  12. Bzoj 3932: [CQOI2015]任务查询系统(主席树)
  13. Java面试题及答案整理 2022 年 8 月最新版
  14. 《微信小程序进阶实战之分答应用开发(中级项目)》(完整版)
  15. 日了。这个竟然还不让发
  16. antd中table组件中如何进行换行操作(react中)
  17. 代数基础 | Kronecker积
  18. 常用逻辑用语知识点【初级和中阶辅导】
  19. 小米5怎样升级android,小米5开发版怎么升级Android 7.0?小米5开发版升级Android 7.0教程...
  20. PTA 7-2 大炮打蚊子

热门文章

  1. ps入门教程零基础视频 小鱼老师美工PS教程
  2. 计算机辅助药物设计总结
  3. 贼简单的Android计时工具,老铁,还不试用起来。
  4. eNSP路由器打开错误,出现40错误
  5. 关于项目的复试准备QA
  6. 在国企加班996..面试拿到offer却又是外包公司,我该怎么办?
  7. 二维码追溯系统有什么特点?
  8. UG NX 12 修剪和延伸
  9. Mac安装jdk的教程
  10. 打造自己的无人船(1)——树莓派环境搭建