QQ接口接入
2015-10-11 11:39
381 查看
首先在http://connect.qq.com/中注册,然后在管理中心创建应用,这里介绍的是网站应用。创建时最主要的两个选项是
网站地址以及回调地址,网站地址最好是你网站的页面,且该页面中必须包含
红线中的标签,才能验证成功。
回调地址:当你QQ成功授权后,会跳回你的网站,该地址就是你网站的域名,然而在我开发的时候发现该地址必须是具体的地址,官方api中写的是域名,然而开发是如果写域名,却一直出现回调地址错误的页面。
当应用申请成功之后就可以进行接口接入开发了。
博主使用的是java,所以就只能上java方面地代码了
授权登陆很简单
在Servlet中,该函数执行之后就会跳往QQ的授权登陆界面,登陆之后就会调回上一步填写的回调地址中的页面了(返回后会在地址栏获取到code和state参数,code参数很重要会用到)。这只是授权成功了,但是你还没有拿到用户的信息。要想拿到用户的信息,你需要accessToken,以及OpenId这两个数据。
获取accessToken
可以通过get请求在加上必须的参数获取accessToken
然而在SDK开发包中,Oauth 的 getAccessTokenByRequest(参数 HttpServletRequest) 方法可以直接获取到 AccessToken.
这样即可获得accessToken.
当然接下来就是OpenId了,OpenId也是QQ用户的唯一标识,在获取到accessToken后,即可获取OpenId,
当然官方有api
官方api,同样要求你使用get方式加上获取的accessToken来获取OpenId,openId的返回是通过json的方式,如图:
json中的openid就是你需要的了。当然这儿如何获取json呢,已通过URLConnection获取,即就是一个html信息;也还用其他的方式。
当然博主使用的是上代码
一句即可获取到openid.
博主还在申请发说说的权限,所以无法演示了。
网站地址以及回调地址,网站地址最好是你网站的页面,且该页面中必须包含
红线中的标签,才能验证成功。
回调地址:当你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.
博主还在申请发说说的权限,所以无法演示了。
相关文章推荐
- Android Manifest 用法
- Spark RDD API详解(一) Map和Reduce
- 100 个最佳 Ubuntu 应用(中)
- 在 AppImage、Flathub 和 Snapcraft 平台上搜索 Linux 应用
- 24 个必备的 Linux 应用程序
- 注册表趣味应用小集
- 远程控制技术的应用
- 一个小型js框架myJSFrame附API使用帮助
- 路由器访问列表的应用
- xDSL技术及其应用
- 详细分析交换机、路由器、集线器的区别和联系
- PowerShell打开或关闭光驱
- 批处理的api WMIC学习体会有感第1/2页
- 批处理 API实现文件下载的代码第1/2页
- Lua教程(十七):C API简介
- 基于XML的桌面应用
- 强制删除工具 xdelbox xdelbox1.5正式版下载
- 揪出交换机端口背后“凶手”导致网速太慢
- 电脑重启后突然检测不到硬盘的原因分析与解决办法
- SQL Server 2008 R2 应用及多服务器管理