java qq第三方登录_java web使用servlet接入第三方 QQ登录

提醒:为方便审核通过,建议在网站明细位置放置QQ按钮,先做好相关的页面跳转,逻辑可以先不写,再提交审核

必要条件申请app_ID,app_KEY

第一次申请需要提交开发者相关资料,通过后创建应用,PC端创建网站应用,填写网站地址,回调地址,网站名称,网站备案号,其中回调地址是QQ登录成功后返回的地址,在这个地址我们可以获取用户昵称,openid等,这里我们填写网站地址/plugin/QqLoginAfter

比如见鬼网的

Z7XkbT4949c33adc3646cda274a3b19e68b86a.png

https://faceghost.com/plugin/QqLoginAfter

审核通过后如下:

mHRe0F3273d1bb2f714ea1b9753becaa1cf923.png

这里我们下载SDK for 网站接入 的Java SDK v2.0

下载完成后将解压后的Sdk4J.jar添加到项目lib目录下

项目的classpath新增qqconnectconfig.propertiesapp_ID = 你的id

app_KEY = 你的key

redirect_URI = 你的回调地址

scope = get_user_info,add_topic,add_one_blog,add_album,upload_pic,list_album,add_share,check_page_fans,add_t,add_pic_t,del_t,get_repost_list,get_info,get_other_info,get_fanslist,get_idollist,add_idol,del_ido,get_tenpay_addr

baseURL = https://graph.qq.com/

getUserInfoURL = https://graph.qq.com/user/get_user_info

accessTokenURL = https://graph.qq.com/oauth2.0/token

authorizeURL = https://graph.qq.com/oauth2.0/authorize

getOpenIDURL = https://graph.qq.com/oauth2.0/me

addTopicURL = https://graph.qq.com/shuoshuo/add_topic

addBlogURL = https://graph.qq.com/blog/add_one_blog

addAlbumURL = https://graph.qq.com/photo/add_album

uploadPicURL = https://graph.qq.com/photo/upload_pic

listAlbumURL = https://graph.qq.com/photo/list_album

addShareURL = https://graph.qq.com/share/add_share

checkPageFansURL = https://graph.qq.com/user/check_page_fans

addTURL = https://graph.qq.com/t/add_t

addPicTURL = https://graph.qq.com/t/add_pic_t

delTURL = https://graph.qq.com/t/del_t

getWeiboUserInfoURL = https://graph.qq.com/user/get_info

getWeiboOtherUserInfoURL = https://graph.qq.com/user/get_other_info

getFansListURL = https://graph.qq.com/relation/get_fanslist

getIdolsListURL = https://graph.qq.com/relation/get_idollist

addIdolURL = https://graph.qq.com/relation/add_idol

delIdolURL = https://graph.qq.com/relation/del_idol

getTenpayAddrURL = https://graph.qq.com/cft_info/get_tenpay_addr

getRepostListURL = https://graph.qq.com/t/get_repost_list

version =2.0.0.0创建2个sevlet,第一个用于跳转到QQ授权页面,一个用于授权成功后回调

参考如下:

qqLogin

com.faceghost.fg.plugin.QqLogin

qqLoginAfter

com.faceghost.fg.plugin.QqLoginAfter

qqLogin

/plugin/QqLogin

qqLoginAfter

/plugin/QqLoginAfter

处理相关逻辑

QqLogin.class 跳转到QQ授权,直接调用jar下的方法即可

参考:package com.faceghost.fg.plugin;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.qq.connect.QQConnectException;

import com.qq.connect.oauth.Oauth;

public class QqLogin extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

try {

response.sendRedirect(new Oauth().getAuthorizeURL(request));

} catch (QQConnectException e) {

e.printStackTrace();

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request,  response);

}

}

QqLoginAfter.class 回调地址,处理逻辑,获取用户昵称,openid;

参考:package com.faceghost.fg.plugin;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

import com.faceghost.fg.service.statics.LoginPluginStatic;

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;

public class QqLoginAfter extends HttpServlet {

private  Logger log = Logger.getLogger(QqLoginAfter.class);

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

try {

AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);

String accessToken   = null,

openID        = null;

if (accessTokenObj.getAccessToken().equals("")) {

response.sendRedirect(basePath);

} else {

accessToken = accessTokenObj.getAccessToken();

OpenID openIDObj =  new OpenID(accessToken);

openID = openIDObj.getUserOpenID();

log.info("QQ openId:" + openID);

UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);

UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();

if (userInfoBean.getRet() == 0) {

try {

log.info("QQ nickname:" + userInfoBean.getNickname());

/**

*

* 这里,就需要你处理自己的逻辑了,首先你已经获取了QQ的openid,这个是跟QQ一一对应的,

*

* 在你的数据库创建一张表,里面保存,网站登录帐号ID,openid ,

*

* 用户在进行使用QQ登录时,根据openid去表中获取帐号ID,

* 如果不存在,跳转到绑定页面,进行保存数据库,然后调用登录逻辑,进行登录。

* 如果存在,在数据查询该openid关联的帐号ID, 然后调用登录逻辑,进行登录。

*

*/

} catch (Exception e) {

e.printStackTrace();

}

}else{

response.sendRedirect(basePath);

}

}

} catch (QQConnectException e) {

}

}

}使用QQ登录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++是一种广泛使用的编程语言,它是由Bjarne Stroustrup于1979年在新泽西州美利山贝尔实验室开始设计开发的。C++是C语言的扩展,旨在提供更强大的编程能力,包括面向对象编程和泛型编程的支持。C++支持数据封装、继承和多态等面向对象编程的特性和泛型编程的模板,以及丰富的标准库,提供了大量的数据结构和算法,极大地提高了开发效率。12 C++是一种静态类型的、编译式的、通用的、大小写敏感的编程语言,它综合了高级语言和低级语言的特点。C++的语法与C语言非常相似,但增加了许多面向对象编程的特性,如类、对象、封装、继承和多态等。这使得C++既保持了C语言的低级特性,如直接访问硬件的能力,又提供了高级语言的特性,如数据封装和代码重用。13 C++的应用领域非常广泛,包括但不限于教育、系统开发、游戏开发、嵌入式系统、工业和商业应用、科研和高性能计算等领域。在教育领域,C++因其结构化和面向对象的特性,常被选为计算机科学和工程专业的入门编程语言。在系统开发领域,C++因其高效性和灵活性,经常被作为开发语言。游戏开发领域中,C++由于其高效性和广泛应用,在开发高性能游戏和游戏引擎中扮演着重要角色。在嵌入式系统领域,C++的高效和灵活性使其成为理想选择。此外,C++还广泛应用于桌面应用、Web浏览器、操作系统、编译器、媒体应用程序、数据库引擎、医疗工程和机器人等领域。16 学习C++的关键是理解其核心概念和编程风格,而不是过于深入技术细节。C++支持多种编程风格,每种风格都能有效地保证运行时间效率和空间效率。因此,无论是初学者还是经验丰富的程序员,都可以通过C++来设计和实现新系统或维护旧系统。3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值