web接入QQ第三方登录
原文地址:https://blog.csdn.net/cwfjimogudan/article/details/54135957
這是第三方登錄的第二篇,關(guān)于web接入微博第三方登錄可以參考我之前的博文,之前的博文比較詳細(xì)的講解了該如何進(jìn)行第三方登錄的申請(qǐng)和準(zhǔn)備工作。?
http://blog.csdn.net/cwfjimogudan/article/details/53946714
接入qq第三方登錄比接入微博第三方登錄要麻煩,主要是因?yàn)榍捌诘臏?zhǔn)備工作較麻煩,需要進(jìn)行域名備案,備案通過(guò)后才能在qq互聯(lián)平臺(tái)上通過(guò)應(yīng)用審核。
我在做項(xiàng)目的時(shí)候,備案是通過(guò)阿里云服務(wù)器進(jìn)行的,備案大概需要半個(gè)月的時(shí)間,所以這個(gè)周期還是很長(zhǎng)的。備案的流程很簡(jiǎn)單,就是需要比較長(zhǎng)的時(shí)間,這里就不做介紹了。
qq登錄和微博登錄的基本開發(fā)過(guò)程是差不多的,所以在這里我就不做特別詳細(xì)的介紹了。
下面直接介紹如何接入qq第三方登錄吧。
首先需要登錄qq互聯(lián)的網(wǎng)站,完成用戶開發(fā)者信息的驗(yàn)證。
審核通過(guò)后,需要在qq互聯(lián)上創(chuàng)建應(yīng)用,并進(jìn)行審核。沒有通過(guò)備案的域名是不能通過(guò)審核的,所以需要先進(jìn)行域名備案。
審核通過(guò)后就可以獲得應(yīng)用的appid和appkey。
下面我們就可以進(jìn)行項(xiàng)目的開發(fā)了。
下載qq互聯(lián)的java sdk?
http://wiki.connect.qq.com/sdk%E4%B8%8B%E8%BD%BD?
sdk中包含了項(xiàng)目的demo程序,demo像我們展示了接入第三方登錄的流程。?
(1)編寫配置文件qqconnectconfig.properties?
這里面有三個(gè)值需要我們修改,分別是appid,appkey和redirect_URI。?
前面兩個(gè)值可以通過(guò)qq互聯(lián)的應(yīng)用管理獲得,redirect_URI是值使用第三方登錄頁(yè)面登錄成功后的跳轉(zhuǎn)地址,這個(gè)地址需要與qq互聯(lián)上保持一致,不然跳轉(zhuǎn)到qq登錄頁(yè)面會(huì)報(bào)錯(cuò)。?
(2)引入開發(fā)需要的jar包?
項(xiàng)目如果詞語(yǔ)maven進(jìn)行管理的話,可以在pom.xml中加入下面的依賴
(3)編寫跳轉(zhuǎn)按鈕事件?
這里使用springmvc來(lái)進(jìn)行開發(fā),這個(gè)controller相應(yīng)qq.do的請(qǐng)求,這個(gè)請(qǐng)求調(diào)用response.sendRedirect(new Oauth().getAuthorizeURL(request));會(huì)將頁(yè)面重定向到qq第三方的登錄頁(yè)面。
?
(4)編寫回調(diào)controller
用戶在第三方登錄頁(yè)面登錄成功后,我們就可以進(jìn)行登錄信息獲取了,這個(gè)時(shí)候頁(yè)面會(huì)自動(dòng)跳轉(zhuǎn)到我們上面配置的redirect_URI的地址。
import java.io.PrintWriter;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;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;@Component @RequestMapping("/afterlogin.do") public class afterlogin {@RequestMappingpublic ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {try {AccessToken accessTokenObj = (new Oauth()).getAccessTokenByRequest(request);String accessToken = null,openID = null;long tokenExpireIn = 0L;if (accessTokenObj.getAccessToken().equals("")) {System.out.print("沒有獲取到響應(yīng)參數(shù)");}else{accessToken = accessTokenObj.getAccessToken();tokenExpireIn = accessTokenObj.getExpireIn();OpenID openIDObj = new OpenID(accessToken);openID = openIDObj.getUserOpenID();UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();String name = userInfoBean.getNickname();System.out.println("歡迎你," + name + "!");}}catch(Exception e){e.printStackTrace();}return null;} }總結(jié)
以上是生活随笔為你收集整理的web接入QQ第三方登录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis连接出错 ERR AUTH <
- 下一篇: ZIP压缩算法详细分析及解压实例