QQ登陆第三方Demo(QQ互联)
来源:互联网 发布:普通话测试软件下载 编辑:程序博客网 时间:2024/06/06 08:54
项目需要做QQ、微博等登陆第三方的功能,第一次接触,虽然官网上有sdk,接口写的很好,调用即可,但是没有文档,看着头疼就自己写了
步骤不多说:
一、申请AppID和AppKey,申请地址:点击打开链接,说明 里面需要域名公安备案号,如果只是自己练手就随便写,审核虽然不通过但是也会给你AppId和AppKey,可以用自己的QQ进行登陆操作。
二、在登陆界面引入QQ登陆图标,按钮链接里面就是请求地址,填上自己的appId和回调地址即可
<a href="https://graph.qq.com/oauth/show?which=Login&display=pc&response_type=code&client_id=???&redirect_uri=???&scope=scope" class="icon connect-qq"><img src="${ctx}/images/Connect_logo_7.png"/></a>
三、点击登陆链接后会跳转到QQ授权登陆界面,如果用户确认登陆,就会跳转到回调地址,并且返回一个code值;
四、接下来就是oAuth2协议里面写的了,通过这个code值去获取QQ用户的access_token,通过access_token再置换用户的Open_Id,通过Open_Id再去获取用户信息。把里面自己的appid和Appkey填上就行了,我里面封装了一个通过url去请求数据的方法httpRequest();
public String QQLogin( String code ,HttpServletRequest request, HttpServletResponse response) throws BizException { //填写Appid,appkey和回调地址 String url = "https://graph.qq.com/oauth2.0/token?grant_type=authorization_code& client_id=???&client_secret=???&redirect_uri=???&code=" + code; String responseStr = httpRequest(url); //获取access_Token String tokens[] = responseStr.split("&"); String token = tokens[0]; String userUrl = "https://graph.qq.com/oauth2.0/me?" + token; String sr = httpRequest(userUrl); JSONObject result = JSON.parseObject(sr.substring(10, sr.length() - 3)); //获取Open_ID String openId = (String) result.get("openid"); //根据OpenId去获取用户信息 String userinfoUrl = "https://graph.qq.com/user/get_user_info?" + token + "&oauth_consumer_key=appId&openid=" + openId; String userInfoText = httpRequest(userinfoUrl); JSONObject userInfoResult = JSON.parseObject(userInfoText); String nickName = (String) userInfoResult.get("nickname"); String userIconUrl = (String) userInfoResult.get("figureurl"); } return null;} //http请求,链接url public static String httpRequest(String url) { HttpURLConnection urlConnection = null; String responseStr = ""; try { urlConnection = (HttpURLConnection) new URL(url).openConnection(); urlConnection.setRequestProperty("Accept-Charset", "utf-8"); urlConnection.setRequestProperty("contentType", "utf-8"); urlConnection.connect(); InputStream inputStream = urlConnection.getInputStream(); responseStr = StreamToString.ConvertToString(inputStream); inputStream.close(); } catch (IOException e) { e.printStackTrace(); } return responseStr; }
五、到这里基本上就已经能够看到自己的QQ用户信息了,你可以把信息打印出来。
不过这种方法适合练手,大致了解QQ登陆第三方的过程,毕竟QQ已经有了很好的sdk,里面都做了很好的接口设计,不过我这边按照QQ对Java sdk的简介做了后总是报100020的错误,就是code被重复使用。不知道哪里错了,希望有大神指导。
1 0
- QQ登陆第三方Demo(QQ互联)
- 第三方登陆,QQ互联
- QQ第三方登陆
- QQ第三方登陆
- 第三方qq登陆
- 第三方QQ登陆
- qq第三方登陆
- QQ第三方登陆
- 第三方之联合登陆(qq)
- 第三方登录(QQ登陆)实现
- 第三方授权登陆(QQ)
- 点击切换QQ(第三方)登陆
- IOS QQ第三方登陆
- 腾讯QQ第三方登陆
- ios 第三方qq登陆
- QQ第三方登陆-极简版
- 第三方qq登陆类
- BMOB--QQ第三方登陆
- sublime text3 3103 激活码
- javaScript--------基础入门(一)
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
- 图像语义分割技术
- thinkphp 3.2自定义标签
- QQ登陆第三方Demo(QQ互联)
- Spring: @Transactional中的propagation属性
- MQ发送事务消息
- 1099. Build A Binary Search Tree 解析
- 随机输入0-100成绩,统计成绩各分段的人数
- TCP传输的单个报文最大字节(MSS和MTU)
- 时间以固定格式转化为字符串
- JZ2440看门狗分析
- 文件与串行化