您的位置:首页 > 其它

QQ接口接入

2015-10-11 11:39 381 查看
首先在http://connect.qq.com/中注册,然后在管理中心创建应用,这里介绍的是网站应用。创建时最主要的两个选项是


网站地址以及回调地址,网站地址最好是你网站的页面,且该页面中必须包含


红线中的标签,才能验证成功。

回调地址:当你QQ成功授权后,会跳回你的网站,该地址就是你网站的域名,然而在我开发的时候发现该地址必须是具体的地址,官方api中写的是域名,然而开发是如果写域名,却一直出现回调地址错误的页面。

当应用申请成功之后就可以进行接口接入开发了。

博主使用的是java,所以就只能上java方面地代码了

授权登陆很简单

// get the code
private void AuthorizeURL(HttpServletRequest request,
HttpServletResponse response) throws IOException {
try {
response.sendRedirect(new Oauth().getAuthorizeURL(request));// 接口接入
} catch (QQConnectException e) {
e.printStackTrace();
}
}


在Servlet中,该函数执行之后就会跳往QQ的授权登陆界面,登陆之后就会调回上一步填写的回调地址中的页面了(返回后会在地址栏获取到code和state参数,code参数很重要会用到)。这只是授权成功了,但是你还没有拿到用户的信息。要想拿到用户的信息,你需要accessToken,以及OpenId这两个数据。

获取accessToken



可以通过get请求在加上必须的参数获取accessToken

然而在SDK开发包中,Oauth 的 getAccessTokenByRequest(参数 HttpServletRequest) 方法可以直接获取到 AccessToken.

// get the accessToken
private void AccessToken(HttpServletRequest request,
HttpServletResponse response) throws IOException {
// get the return code
String code = request.getParameter("code");
String state = request.getParameter("state");
AccessToken accessToken = null;
try {
accessToken = new Oauth().getAccessTokenByRequest(request);//获取accessToken
// set the accessToken
HttpSession session = request.getSession();
session.setAttribute("accessToken", accessToken.getAccessToken());// 放到域对象session中

} catch (QQConnectException e) {
e.printStackTrace();
}
}


这样即可获得accessToken.

当然接下来就是OpenId了,OpenId也是QQ用户的唯一标识,在获取到accessToken后,即可获取OpenId,

当然官方有api



官方api,同样要求你使用get方式加上获取的accessToken来获取OpenId,openId的返回是通过json的方式,如图:



json中的openid就是你需要的了。当然这儿如何获取json呢,已通过URLConnection获取,即就是一个html信息;也还用其他的方式。

当然博主使用的是上代码

// get the openId
private void OpenId(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String accessToken = (String) request.getSession().getAttribute(
"accessToken");
HttpSession session = request.getSession();
// define the openId
OpenID openId = new OpenID(accessToken);//获取openid
try {
session.setAttribute("openId", openId.getUserOpenID());//   放入session域中
} catch (QQConnectException e) {
e.printStackTrace();
}
}


一句即可获取到openid.

博主还在申请发说说的权限,所以无法演示了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息