当前位置:   article > 正文

QQ集成登陆_集登 qq 录我

集登 qq 录我
  1. QQ授权登陆文档详解与步骤
  2. 一、在QQ的开发平台申请Appkey与Appid。但是申请的前提是需要域名。把拿到的appkey与appid存放在一个txt文档中,以便用到。
  3. 二、到技术支持中心下载Java sdk包。不要自己用httpclient去调用QQ的接口,那样可能会被别人攻击网站。 下载好的sdk里会有一个demo,把demo里的lib下的依赖包放到工程lib下,然后把那几个.property文件放到src下面。并把qqconnectconfig.properties文件里的前三项改成你自己的appkey,appid,和redirect_URI(QQ同意授权后,跳回到您的系统里的哪个路径)。
  4. 三、使用说明:在页面点击一个按钮后,跳到action里的方法,在方法里,重定向一个请求到QQAPI。用QQ的API我们直接重定向的方式如下:
  5. String url=new Oauth().getAuthorizeURL(request);这样我们可以得到请求的路径了,使用自带的qq的sdk包,我们可以直接这样调。如果不使用这个方式,则直接发送请求:
  6. https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=[YOUR_APPID]&redirect_uri=[YOUR_REDIRECT_URI]&scope=[THE_SCOPE]请求上面这个地址
  7. 请求后,会弹出一个授权页面,如果我们同意授权后,会自动跳转到我们的“redirect_uri”路径里,并在我们的“redirect_uri”后面加上“?code=XXXXXXX”
  8. 然后我们可以根据返回来的参数code来拿到access_token和其它的一些信息。例如:
  9. 我们可以拿到access_token后,可以根据它拿到用户的openid,然后根据access_token与openid可以拿到用户的信息,代码如下:

  1. /**
  2. * 进入QQ重定向的页面,取用户数据。
  3. *TODO void
  4. * @throws IOException
  5. */
  6. @Filters
  7. @At("/regidt")
  8. @Ok("jsp:member.regidt")
  9. public void regidt(@Param("code") String code , HttpServletRequest request,HttpServletResponse response) throws IOException{
  10. response.setContentType("text/html; charset=utf-8");
  11. PrintWriter out = response.getWriter();
  12. try {
  13. System.out.println(request.getParameter("code"));
  14. AccessToken accessTokenObj = new Oauth().getAccessTokenByRequest(request);
  15. String accessToken = null,
  16. openID = null;
  17. long tokenExpireIn = 0L;
  18. if (accessTokenObj.getAccessToken().equals("")) {
  19. System.out.print("没有获取到响应参数");
  20. } else {
  21. accessToken = accessTokenObj.getAccessToken();
  22. tokenExpireIn = accessTokenObj.getExpireIn();
  23. request.getSession().setAttribute("demo_access_token", accessToken);
  24. request.getSession().setAttribute("demo_token_expirein", String.valueOf(tokenExpireIn));
  25. // 利用获取到的accessToken 去获取当前用的openid -------- start
  26. OpenID openIDObj = new OpenID(accessToken);
  27. openID = openIDObj.getUserOpenID();
  28. out.println("欢迎你,代号为 " + openID + " 的用户!");
  29. request.getSession().setAttribute("demo_openid", openID);
  30. // 利用获取到的accessToken 去获取当前用户的openid --------- end
  31. UserInfo qzoneUserInfo = new UserInfo(accessToken, openID);
  32. UserInfoBean userInfoBean = qzoneUserInfo.getUserInfo();
  33. request.setAttribute("userInfoBean", userInfoBean);
  34. out.println("
  35. ");
  36. if (userInfoBean.getRet() == 0) {
  37. out.println(userInfoBean.getNickname() + "
  38. ");
  39. out.println(userInfoBean.getGender() + "
  40. ");
  41. } else {
  42. out.println("很抱歉,我们没能正确获取到您的信息,原因是: " + userInfoBean.getMsg());
  43. }
  44. out.println("<p> end -----------------------------------利用获取到的accessToken,openid 去获取用户在Qzone的昵称等信息 ---------------------------- end </p>");
  45. out.println("<p> start ----------------------------------- 验证当前用户是否为认证空间的粉丝------------------------------------------------ start <p>");
  46. PageFans pageFansObj = new PageFans(accessToken, openID);
  47. PageFansBean pageFansBean = pageFansObj.checkPageFans("97700000");
  48. if (pageFansBean.getRet() == 0) {
  49. out.println("<p>验证您" + (pageFansBean.isFans() ? "是" : "不是") + "QQ空间97700000官方认证空间的粉丝</p>");
  50. } else {
  51. out.println("很抱歉,我们没能正确获取到您的信息,原因是: " + pageFansBean.getMsg());
  52. }
  53. out.println("<p> end ----------------------------------- 验证当前用户是否为认证空间的粉丝------------------------------------------------ end <p>");
  54. out.println("<p> start -----------------------------------利用获取到的accessToken,openid 去获取用户在微博的昵称等信息 ---------------------------- start </p>");
  55. com.qq.connect.api.weibo.UserInfo weiboUserInfo = new com.qq.connect.api.weibo.UserInfo(accessToken, openID);
  56. com.qq.connect.javabeans.weibo.UserInfoBean weiboUserInfoBean = weiboUserInfo.getUserInfo();
  57. if (weiboUserInfoBean.getRet() == 0) {
  58. //获取用户的微博头像----------------------start
  59. out.println("<image src=" + weiboUserInfoBean.getAvatar().getAvatarURL30() + "/>
  60. ");
  61. out.println("<image src=" + weiboUserInfoBean.getAvatar().getAvatarURL50() + "/>
  62. ");
  63. out.println("<image src=" + weiboUserInfoBean.getAvatar().getAvatarURL100() + "/>
  64. ");
  65. //获取用户的微博头像 ---------------------end
  66. //获取用户的生日信息 --------------------start
  67. out.println("<p>尊敬的用户,你的生日是: " + weiboUserInfoBean.getBirthday().getYear()
  68. + "年" + weiboUserInfoBean.getBirthday().getMonth() + "月" +
  69. weiboUserInfoBean.getBirthday().getDay() + "日");
  70. //获取用户的生日信息 --------------------end
  71. StringBuffer sb = new StringBuffer();
  72. sb.append("<p>所在地:" + weiboUserInfoBean.getCountryCode() + "-" + weiboUserInfoBean.getProvinceCode() + "-" + weiboUserInfoBean.getCityCode()
  73. + weiboUserInfoBean.getLocation());
  74. //获取用户的公司信息---------------------------start
  75. ArrayList<Company> companies = weiboUserInfoBean.getCompanies();
  76. if (companies.size() > 0) {
  77. //有公司信息
  78. for (int i=0, j=companies.size(); i<j; i++) {
  79. sb.append("<p>曾服役过的公司:公司ID-" + companies.get(i).getID() + " 名称-" +
  80. companies.get(i).getCompanyName() + " 部门名称-" + companies.get(i).getDepartmentName() + " 开始工作年-" +
  81. companies.get(i).getBeginYear() + " 结束工作年-" + companies.get(i).getEndYear());
  82. }
  83. } else {
  84. //没有公司信息
  85. }
  86. //获取用户的公司信息---------------------------end
  87. out.println(sb.toString());
  88. } else {
  89. out.println("很抱歉,我们没能正确获取到您的信息,原因是: " + weiboUserInfoBean.getMsg());
  90. }
  91. out.println("<p> end -----------------------------------利用获取到的accessToken,openid 去获取用户在微博的昵称等信息 ---------------------------- end </p>");
  92. }
  93. } catch (QQConnectException e) {
  94. }
  95. }

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号