网站接入QQ登录最新2020 java版本
1.首先先注冊賬號,然后填資料審核,等個三四天吧大概
https://connect.qq.com/
2.審核通過后點擊創(chuàng)建應(yīng)用,把備案號什么的都填(這個審核兩天之內(nèi)一般)
!!! 這里有個重點,網(wǎng)站地址只能填一下,回調(diào)地址隨便填一個,通過后可以隨便改的
3. 整理java代碼
我的是springBoot項目 先導(dǎo)入依賴,官網(wǎng)好像沒有java版本的jar包了,我是找個網(wǎng)上坐標(biāo)
然后編寫創(chuàng)建一個配置文件 qqconnectconfig.properties 名字建議一致,改完了以后復(fù)制粘貼即可
app_ID = 填成自己的ID app_KEY = 填成自己的KEY redirect_URI = 填成自己的回調(diào)地址 grant_type=authorization_code 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前端代碼 這里的話 根據(jù)自己的實際情況
<a href="/qqLogin" onclick="layer.msg('正在通過QQ登入', {icon:16, shade: 0.1, time:0})" ><img class="avatar size-S" src="img/qq.jpg" title="登陸">登陸</a>后端java 跳轉(zhuǎn)代碼 這個直接復(fù)制粘貼記性
//QQ登錄的跳轉(zhuǎn)@GetMapping("/qqLogin")public String qqLogin(HttpServletRequest request, HttpServletResponse response) throws Exception {response.setContentType("text/html;charset=utf-8");try {String authorizeURL = new Oauth().getAuthorizeURL(request);return "redirect:" + authorizeURL;} catch (Exception e) {return null;}這個時候網(wǎng)頁是可以用的
然后編寫java的回調(diào)代碼
Crotroller類
services類,可能是jar版本太老了,jar的方法都不生效了,我就自己看著官方api文檔發(fā)請求寫了一個
@PropertySource("classpath:qqconnectconfig.properties") @Service public class QQServiceImpl {@Value("${app_ID}")private String appID;@Value("${app_KEY}")private String appKEY;@Value("${redirect_URI}")private String redirectURI;@Value("${grant_type}")private String grantType;@Resourceprivate MemeberMapper memeber;//根據(jù)code查詢public Member LoginBack(String code) {Member member = new Member();//獲取accessTokenString urlAccessToken = HttpUtil.get("https://graph.qq.com/oauth2.0/token?grant_type=" + grantType + "&client_id=" + appID + "&client_secret=" + appKEY + "&code=" + code + "&redirect_uri=" + redirectURI);//截取accessTokenString accessToken = StrUtil.subBetween(urlAccessToken, "access_token=", "&expires_in");if(!StrUtil.isBlank(accessToken)){//獲取openIdString urlOpenId = HttpUtil.get("https://graph.qq.com/oauth2.0/me?access_token="+accessToken);//截取openIdString openId = StrUtil.subBetween(urlOpenId, "openid\":\"", "\"}");if(!StrUtil.isBlank(openId)){try {//訪問用戶資料String userMessage = HttpUtil.get("https://graph.qq.com/user/get_user_info?access_token=" + accessToken + "&oauth_consumer_key="+appID+"&openid=" + openId);JSONObject jsonObject = JSONUtil.parseObj(userMessage);//獲取用戶姓名String nickname = (String)jsonObject.get("nickname");//獲取QQ頭像String nickImg = (String)jsonObject.get("figureurl_qq_1");//獲取QQ性別String gender= (String)jsonObject.get("gender");//這里的隨便怎么寫}catch (Exception e){System.out.println(e);}}}return member;}}說一下QQ的執(zhí)行流程吧
https://wiki.connect.qq.com/%E4%BD%BF%E7%94%A8authorization_code%E8%8E%B7%E5%8F%96access_token
主要的執(zhí)行流程:
QQ頁面登錄后 ===> 會往回調(diào)函數(shù)里面穿一個code值, => 根據(jù)code值獲取accessToken值 =>再根據(jù)accessToken值>獲取openId值
再拿openId值去訪問接口獲取基本信息,這個我得注釋寫的很清楚了哈,具體的流程就是這樣
問題一:,填了回調(diào)接口以下,只能回調(diào)到服務(wù)器上,回調(diào)不到本地?
答案:使用 第三方的映射工具,把本地的服務(wù)映射成域名.就可以.我在這里用的是小米球映射工具
問題二:QQ登錄界面出現(xiàn)回調(diào)地址校驗通知錯誤?
答案:在本地電腦上host目錄里面配置一下
總結(jié)
以上是生活随笔為你收集整理的网站接入QQ登录最新2020 java版本的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux Centos7安装hadoo
- 下一篇: 待整理