美文网首页
第三方登录QQ

第三方登录QQ

作者: 盗生一 | 来源:发表于2020-09-30 15:56 被阅读0次
引入依赖(以SpringBoot为例)
        <!-- QQ登录依赖包 -->
        <dependency>
            <groupId>net.gplatform</groupId>
            <artifactId>Sdk4J</artifactId>
            <version>2.0</version>
        </dependency>

编写Controller


package com.moti.controller;
import com.qq.connect.QQConnectException;
import com.qq.connect.api.OpenID;
import com.qq.connect.api.qzone.UserInfo;
import com.qq.connect.javabeans.AccessToken;
import com.qq.connect.javabeans.qzone.UserInfoBean;
import com.qq.connect.oauth.Oauth;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

/**
 * @ClassName: LoginController
 * @Description: QQ登录控制器
 * @author: xw
 * @date 2020/2/21 10:54
 * @Version: 1.0
 **/
@Controller
public class LoginController {

    @RequestMapping("/")
    public String login(){
        return "login";
    }
    /**
     * 请求QQ登录
     */
    @RequestMapping("/loginByQQ")
    public void loginByQQ(HttpServletRequest request, HttpServletResponse response) {
        response.setContentType("text/html;charset=utf-8");
        try {
            response.sendRedirect(new Oauth().getAuthorizeURL(request));
            System.out.println("请求QQ登录,开始跳转...");
        } catch (QQConnectException | IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * QQ登录回调地址
     *
     * @return
     */
    @RequestMapping("/connection")
    public String connection(HttpServletRequest request, HttpServletResponse response, Map<String,Object> map) {
        try {
            AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);
            String accessToken = null, openID = null;
            long tokenExpireIn = 0L;
            if ("".equals(accessTokenObj.getAccessToken())) {
                System.out.println("登录失败:没有获取到响应参数");
                return "accessTokenObj=>" + accessTokenObj + "; accessToken" + accessTokenObj.getAccessToken();
            } else {
                accessToken = accessTokenObj.getAccessToken();
                tokenExpireIn = accessTokenObj.getExpireIn();
                System.out.println("accessToken" + accessToken);
                request.getSession().setAttribute("demo_access_token", accessToken);
                request.getSession().setAttribute("demo_token_expirein", String.valueOf(tokenExpireIn));

                // 利用获取到的accessToken 去获取当前用的openid -------- start
                OpenID openIDObj = new OpenID(accessToken);
                openID = openIDObj.getUserOpenID();

                UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
                UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
                if (userInfoBean.getRet() == 0) {
                    String name = removeNonBmpUnicode(userInfoBean.getNickname());
                    String imgUrl = userInfoBean.getAvatar().getAvatarURL100();
                    map.put("openId",openID);
                    map.put("name",name);
                    map.put("imgUrl",imgUrl);
                } else {
                    System.out.println("很抱歉,我们没能正确获取到您的信息,原因是: " + userInfoBean.getMsg());
                }
            }
        } catch (QQConnectException e) {
            e.printStackTrace();
        }
        return "index";
    }

    /**
     * 处理掉QQ网名中的特殊表情
     * @param str
     * @return
     */
    public String removeNonBmpUnicode(String str) {
        if (str == null) {
            return null;
        }
        str = str.replaceAll("[^\\u0000-\\uFFFF]", "");
        if ("".equals(str)) {
            str = "(* _ *)";
        }
        return str;
    }
}

相关文章

  • 记一次错误 :三方登录退出&H5交互无法调起&HTTP401错误

    场景①: 登录qq1 ,退出登录,再切换qq2,登录后还是显示qq1的信息 解决①: 第三方登录, 退出app记得...

  • 网站接入QQ第三方登录

    第三方网站主要通过使用“QQ登录”接入QQ互联开放平台。“QQ登录”是QQ互联开放平台提供给第三方网站的一种服务。...

  • 登录-QQ登录-流程分析

    登录-QQ登录-流程分析 目的:掌握第三方登录的实现流程。 描述一下我们要做的事情: 在登录页面,QQ登录图片处,...

  • 第三方登录梳理

    QQ 第三方登录 目的: 优化用户登录体验 流程: 按流程 : 用户方面: 用户 点击 QQ登录 按钮 用户 扫码...

  • Android之第三方平台实现QQ登录和QQ分享

    目前大多数APP都包含了第三方平台的登录,特别是QQ和微信,这篇博客主要讲的是如何实现QQ第三方平台实现QQ登录和...

  • 友盟第三方平台登录与分享

    友盟第三方登录 一、概述第三方登录主要用于简化用户登录流程,通过用户拥有的微博、QQ、微信等第三方账号进行登录并且...

  • 第三方登录

    3.3 第三方登录 第三方登录,国内常用的第三方登录有:qq、微信、微博三个社交平台。国外常见的有Facebook...

  • QQ第三方登录基本原理

    一、QQ登录:申请APPID和APPKey:QQ互联 http://connect.qq.com 二、PHP第三方...

  • iOS电商项目之登录注册

    登录注册分为第三方登录(QQ、微信),立即注册、免密登录、忘记密码,整个模块细节非常多。 登录注册 登录注册 想要...

  • QQ、微信的社会化SDK接入实践

    第三方登录的意义 现在很多 App 都支持第三方登录,比如用 QQ 和微信登录到 App。这样免去了注册帐号的麻烦...

网友评论

      本文标题:第三方登录QQ

      本文链接:https://www.haomeiwen.com/subject/wmjluktx.html