到了这一步基本上涉及第三方的就结束了,是不是很简单?后面无非就是如何插入、如何存放token、写入session等。

有几点注意事项:

相关文档官网已经写得非常细了,但是相当乱:

这个我就不详细讲了,登录 很容易找到相关入口,注册成为开发者,实名认证,一模一样的。

点击链接 创建web应用:

创建成果后建立相关信息qq java,主要是上面那些:

我就不一一介绍了,都看得懂。

微博注册不需要网站一定要备案,但对网站本来有必定要求,不能弄一个空壳网站让别人去审核,肯定审核不通过的。

有关微博的对接可以参考我好几年前写的一篇文章:【新手入门篇】新浪微博应用开发之Java入门篇

微博视觉素材下载在这里,页面合适位置放一个登录图标:

function weiboLogin()

{

let weiboAppId = '432432';

let weiboAuthPath = 'http://www.test.com/authweibo';

openWindow(`https://api.weibo.com/oauth2/authorize?client_id=${weiboAppId}&response_type=code&redirect_uri=${encodeURIComponent(weiboAuthPath)}`);

}

微博登录有一个好处qq java,第一次登录必须授权,后面第二次登录时只会一闪而过自动就登录失败了,都不需要点一下,用户感受非常好,看下图:

登录成功会返回一个code,根据code换取accessToken:

String params = "client_id=" + appId

+ "&client_secret=" + appSecret

+ "&grant_type=authorization_code"

+ "&redirect_uri=" + URLUtil.encode(authPath)

+ "&code=" + code;

// 用code换取accessToken

String result = HttpsUtil.post("https://api.weibo.com/oauth2/access_token", params);

Map resp = JsonUtil.toObject(result, new TypeReference>(){});

Integer errorCode = (Integer)resp.get("error_code");

String error = (String)resp.get("error");

String errorMsg = (String)resp.get("error_description");

if(errorCode != null && errorCode != 0) return new ErrorResult(errorCode, error + (errorMsg==null?"":errorMsg));

String accessToken = (String)resp.get("access_token");

String uid = (String)resp.get("uid"); // 这个uid就是微博用户的唯一用户ID,可以通过这个id直接访问到用户微博主页

int expires = (Integer)resp.get("expires_in"); // 有效期,单位秒

// 用uid和accessToken换取用户信息

String result = HttpsUtil.get("https://api.weibo.com/2/users/show.json?access_token="+accessToken+"&uid="+uid);

Map resp = JsonUtil.toObject(result, new TypeReference>(){});

errorCode = (Integer)resp.get("error_code");

error = (String)resp.get("error");

errorMsg = (String)resp.get("error_description");

if(errorCode != null && errorCode != 0) return new ErrorResult(errorCode, error + (errorMsg==null?"":errorMsg));

String nickname = (String)resp.get("screen_name");

// 微博180*180高清头像

String avatar = (String)resp.get("avatar_large");

String gender = (String)resp.get("gender");

gender = "m".equals(gender) ? "男" : ("f".equals(gender) ? "女" : "");

至此涉及第三方的东西都完了,剩下的就是用户自己存放到、写入token、保存session、以及校验接口开发了。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/sanxing/article-120739-2.html

java中如何实现qq登录与微博登录,如何从零开始对接第三方登录(Java版):QQ登录和微博登录(2)...相关推荐

  1. 对接第三方平台JAVA接口问题推送和解决

    对接第三方平台JAVA接口问题推送和解决 参考文章: (1)对接第三方平台JAVA接口问题推送和解决 (2)https://www.cnblogs.com/CreateMyself/p/7295879 ...

  2. java加按钮_如何从零开始对接第三方登录(Java版):QQ登录和微博登录

    阅读本文约需要8分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了HashMap和TreeMap的知识,今天跟大家分享下对 ...

  3. 如何从零开始对接第三方登录(Java版):QQ登录和微博登录

    前言 个人网站最近增加了评论功能,为了方便用户不用注册就可以评论,对接了QQ和微博这2大常用软件的一键登录,总的来说其实都挺简单的,可能会有一点小坑,但不算多,完整记录下来方便后来人快速对接. 后台设 ...

  4. java中的复合数据类型是什么_【填空题】类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素。一个类的实现包括两部分:____和_____....

    [填空题]类是Java中的一种重要的复合数据类型,是组成Java程序的基本要素.一个类的实现包括两部分:____和_____. 更多相关问题 [名词解释] 观叶树木 [单选] 开花时有浓郁香气的树种是 ...

  5. java 中张孝祥老师_谁有传智博客张孝祥老师的Java视频——必须是完整的

    报告楼主,我有! 传智播客官网 itcast 传智播客J2EE全套视频教程,是目前覆盖面最广,项目最真实的视频教程 传智播客Java EE视频教程 <传智播客AJAX视频教程> <传 ...

  6. 在java中为什么_属性绑定到类型_方法绑定到对象_13. Java基础之类型信息(RTTI和反射)...

    一. Java反射机制介绍 Java 反射机制.通俗来讲呢,就是在运行状态中,我们可以根据"类的部分已经的信息"来还原"类的全部的信息".这里"类的部 ...

  7. java中super用来定义父类,定义子类必须使用的关键字是 在java中子类若要继承父类,需要使用的关键字是什么...

    java定义接口时需要使用的关键字是 定义接口复使用的关键字是"interface",中文意思"接口.解释:通常接口都是制为了定义百某些规范,而在接口中只定义了方法,而没 ...

  8. java中OOD_还在傻傻分不清?3分钟快速认识Java中的OOA、OOD、OOP

    在计算机专业中,Java专业是最常设的专业之一,在学习Java时,框架是重要的学习内容,你还在傻傻分不清吗?3分钟快速认识Java中的OOA.OOD.OOP.OOA:Object-Oriented A ...

  9. java中的轮子是什么意思_后端的轮子(一) - java后端开发的个人空间 - OSCHINA - 中文开源技术交流社区...

    前言 首先,看看这个,想必大家对下面这种简历看得比较多了吧? 精通JAVA,Python,熟练掌握C++ 精通Redis,Memcached,Mysql 精通Nginx配置,模块开发 精通Kafka, ...

最新文章

  1. mybatis 中#与$的区别
  2. 我的vExpert之路-传递正能量!
  3. python中 getnode用法_node.js 爬虫入门总结
  4. 执行应用程序出现: No such file or directory
  5. Quartz Scheduler插件–隐藏的宝藏
  6. linux md5sum命令
  7. Python入门系列(1):如何使用Sublime text开发Python
  8. Redis Cluster 伪集群的搭建
  9. 《Puppet权威指南》——第1章 运维工程师的利器——自动化运维工具
  10. Unity3d之HashSlash学习笔记(一)--角色属性类的构架
  11. linux命令mysql启动,linux中mysql启动服务命令
  12. 城市规划图例符号_城市规划图例符号精编版
  13. 一款桌面整理软件——Fences
  14. 基站位置查询系统_如何查看附近信号基站的位置
  15. 【typecho插件】typecho邮箱插件LoveXXzhoudedi祝福邮箱typecho插件、小周
  16. 移动营销必备:App自动绑定的五大场景赋能
  17. MYSQL从简单查询到高级查询(一)
  18. 微信公众号使用H5获取地理位置信息并定位
  19. uniapp和vue的区别
  20. android模拟器检测方案优化,逍遥模拟器优化方案 - 新手引导 - 逍遥安卓论坛 - Powered by Discuz!...

热门文章

  1. 共享 || 109份2019年品牌行业报告
  2. 大白话之辩论DDD,阿里面试中台化理解
  3. 在html中有两种类型的标签 它们分别是,VB习题及题解答.doc
  4. Singleton 设计模式
  5. 一个百度员工的离职感悟
  6. 旅馆顾客统计(静态成员)
  7. spark报Got an error when resolving hostNames. Falling back to /default-rack for all
  8. 卸载亚信科技安全助手
  9. 全球及中国高速公路行业未来建设规划与十四五盈利前景分析报告2022版
  10. 惠普触控板使用指南_hp触摸板开关_hp电脑触摸屏开启快捷键