保姆级教程springboot2.* + vue2实现QQ登录


话不多直接上干货

第一步:登录QQ互联创建用应

1.1.直接浏览器搜索:“QQ互联” 带有官方字的点击打开

在这里插入图片描述

1.2.点击登录,登录后点击首页旁边的"应用管理"

在这里插入图片描述

1.3.点击"创建应用",可选择移动和PC,我这以PC为例

在这里插入图片描述

1.4.上面两个请选择的可以随便选择 ,网站名称建议使用备案的服务名称下面的网站介绍是个大坑,由于我淋过雨知道那种滋味,我就不想让大家淋雨了,被驳回四五次,呜呜呜呜呜呜,我直接就把我的分享出来了:个人学习使用,记录一些解决问题的方法,个人网站,主要用于记录自己在学习Java和IT技术学习中遇到的困难和解决办法,也会分享学习Java和IT技术过程中的一些经验,也便于自己以后回顾学习路上的辛苦历程。 你们直接CV吧

在这里插入图片描述

1.5.下面这个我就发出标题我的你们把域名换成你们的就可以了

在这里插入图片描述

你们也用 qq/callback 方便后面操作

在这里插入图片描述

第二步:创建SpringBoot和VUE集成QQ登录

2.1.我这里直接拉去若依框架,就不创建了

		<!-- 在login.vue添加该标签 -->
        <el-link @click="qqLogin" :underline="false" >
        			<!-- 图标 -->
          <img src="../assets/login/images/qq.jpg" width="30" height="30"  alt="加载失败"/>
        </el-link>

2.2.动态加载 QQ 互联开放平台的 JavaScript SDK 并跳转登录页面

  methods: {
    qqLogin(){
      const appId = "创建应用通过后给appId";
      const redirectURI = "这里是回调地址";

      const handleCallback = (opts) => {
        // 处理登录成功后的回调逻辑
        console.log(opts);
      };

      const handleLogin = () => {
        if (typeof QC === "undefined" || !QC.Login.check()) {
          // 如果 QC 对象未定义或用户未登录,则弹出 QQ 登录窗口
          QC.Login.showPopup(
            {
              appId: appId,
              redirectURI: redirectURI
            },
            handleCallback
          );
        } else {
          // 用户已登录,直接执行回调逻辑
          handleCallback(QC.Login.getMe());
        }
      };

      // 动态加载 QQ 互联开放平台的 JavaScript SDK
      const script = document.createElement("script");
      script.src = `https://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js?appId=${appId}&redirectURI=${encodeURIComponent(
        redirectURI
      )}`;
      script.onload = handleLogin;
      document.head.appendChild(script);


    }
  }

2.3.后端在SysLoginController.java和application.yml添加代码

spring:
  security:
	  oauth2:
	    client:
	      registration:
	        qq:
	          #你在 QQ 开放平台注册应用程序时获得的客户端 ID。
	          client-id: APPID
	          #你在 QQ 开放平台注册应用程序时获得的客户端密钥。
	          client-secret: APP Key
	          #用户在 QQ 授权页面授权后将被重定向回的 URL。一般来说,这个URL会指向你的前端应用程序中的一个特定页面,用于接收授权码或令牌。
	          redirect-uri: 回调地址
	          #授权模式,这里设置为 authorization_code,表示使用授权码模式进行授权。
	          authorization-grant-type: authorization_code
	      provider:
	        qq:
	          #QQ 提供商的授权服务器的授权地址,用于跳转到 QQ 登录页面,并请求用户授权。
	          authorization-uri: https://graph.qq.com/oauth2.0/authorize
	          #QQ 提供商的授权服务器的令牌地址,用于获取访问令牌、刷新令牌等。
	          token-uri: https://graph.qq.com/oauth2.0/token
	          #QQ 提供商的用户信息地址,用于获取用户的基本信息。
	          user-info-uri: https://graph.qq.com/oauth2.0/me
	          #指定用户信息中的属性名称,这里设置为 openid,表示使用 OpenID 作为用户名。
	          user-name-attribute: openid

2.4.点开LoginController.java页面更换@RestController注解,其他方法上添加注解@ResponseBody

    @GetMapping("/qq/callback")
    public String qqCallback(Authentication authentication) {
        OAuth2AuthenticationToken oauthToken = (OAuth2AuthenticationToken) authentication;
        OAuth2User user = oauthToken.getPrincipal();

        // 获取用户信息,可以根据需要进行处理
        log.info("---------------" + user.toString());
        return "redirect:/"; // 根据实际情况修改重定向的地址
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值