【第三方互联】9、新浪微博(sina)授权第三方登录
当我们创建的新浪微博互联应用成功后,我们便可以开始使用该应用来实现新浪微博授权操作
一、获取 App Key 和 App Secret
1、在“我的应用”,点击应用,查看我们创建的应用的基本信息
这样,我们就获取到了 App Key 和 App Secret
2、将 App Key 和 App Secret,以及该应用的信息放入项目中的配置文件中,我使用的是SpringBoot,我放在了 application.yml 配置文件中
二、添加 Maven 依赖
<!-- 网络请求 -->
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.6</version>
</dependency>
其他依赖,请自行加入
三、登录按钮
在页面放置 “新浪微博” 授权登录的 DOM 元素
<a th:href="@{weibo/auth}" class="link" title="新浪微博登录"><i class="layui-icon"></i></a>
四、接口类
创建 “新浪微博” 授权登录的 Controller,WeiboController.java
1、从配置文件中获取 “新浪微博” 互联信息
/*** 微博授权中提供的 appid 和 appkey*/@Value("${weibo.oauth.appid}")public String APPID;@Value("${weibo.oauth.appkey}")public String APPKEY;@Value("${weibo.oauth.url}")public String URL;
定义三个变量,接收 “新浪微博” 互联的信息
2、登录按钮点击后的接口
/*** 请求授权页面*/@GetMapping(value = "/auth")public String qqAuth(HttpSession session) {// 用于第三方应用防止CSRF攻击String uuid = UUID.randomUUID().toString().replaceAll("-", "");session.setAttribute("state", uuid);// Step1:获取Authorization CodeString url = "https://api.weibo.com/oauth2/authorize?response_type=code" +"&client_id=" + APPID +"&redirect_uri=" + URLEncoder.encode(URL) +"&state=" + uuid;return redirectTo(url);}/*** 重定向至地址 url*/public static String redirectTo(String url) {return "redirect:" + url;}
“新浪微博” 互联的接口文档中建议我们在授权登录时传入一个加密的数据防止被攻击,我们传入了UUID,最后重定向到授权页面
3、我们在授权页面,登录了 “新浪微博” 账号,并同意授权后,就回到了我们创建应用是设置的回调地址里面了
/*** 授权回调*/@GetMapping(value = "/callback")public String qqCallback(HttpServletRequest request) throws Exception {HttpSession session = request.getSession();// 得到Authorization CodeString code = request.getParameter("code");// 我们放在地址中的状态码String state = request.getParameter("state");String uuid = (String) session.getAttribute("state");// 验证信息我们发送的状态码if (null != uuid) {// 状态码不正确,直接返回登录页面if (!uuid.equals(state)) {return redirectTo("/login");}}// Step2:通过Authorization Code获取Access TokenString url = "https://api.weibo.com/oauth2/access_token?grant_type=authorization_code" +"&client_id=" + APPID +"&client_secret=" + APPKEY +"&code=" + code +"&redirect_uri=" + URL;JSONObject accessTokenJson = WeiboHttpClient.getAccessToken(url);// 拿到用户的唯一标识--uidString uid = accessTokenJson.getString("uid");// Step3: 获取用户信息url = "https://api.weibo.com/2/users/show.json?access_token=" + accessTokenJson.get("access_token") +"&uid=" + accessTokenJson.get("uid");JSONObject jsonObject = WeiboHttpClient.getUserInfo(url);/*** TODO 获取到用户信息之后,你自己的业务逻辑* 判断数据库是否有次用户,有---登录成功,无---保存用户至数据库,登录成功*/return redirectTo("/success");}
以上代码,从我自己的项目中拷贝而来,如果你直接使用,你需要对其业务代码进行修改
五、网络接口方法
第四步代码中所用到的网络接口方法,我放在了 WeiboHttpClient.java 文件中,主要有两个方法
/*** 获取Access Token* post*/public static JSONObject getAccessToken(String url) throws IOException {HttpClient client = HttpClients.createDefault();HttpPost httpPost = new HttpPost(url);HttpResponse response = client.execute(httpPost);HttpEntity entity = response.getEntity();if (null != entity) {String result = EntityUtils.toString(entity, "UTF-8");return JSONObject.parseObject(result);}httpPost.releaseConnection();return null;}/*** 获取微博用户信息* get*/public static JSONObject getUserInfo(String url) throws IOException {JSONObject jsonObject = null;CloseableHttpClient client = HttpClients.createDefault();HttpGet httpGet = new HttpGet(url);HttpResponse response = client.execute(httpGet);HttpEntity entity = response.getEntity();if (entity != null) {String result = EntityUtils.toString(entity, "UTF-8");jsonObject = JSONObject.parseObject(result);}httpGet.releaseConnection();return jsonObject;}
以上,就是完成 “新浪微博” 授权登录的过程,相比 QQ 授权登录 少了一个获取 openID 的步骤,新浪微博 登录以 uid 作为唯一标识
六、总结
总结来说如图所示
如您在阅读中发现不足,欢迎留言!!!
下一篇:
【第三方互联】十、注册成为支付宝(Alipay)开发者
【第三方互联】9、新浪微博(sina)授权第三方登录相关推荐
- 【第三方互联】8、创建新浪微博(sina)互联应用
当我们注册新浪微博开发者通过审核之后,我们才能创建应用 当我们开发者认证审核通过之后,我们的身份认证状态将变为:"已认证",这时,我们便可以创建微连接应用了 一.创建应用 这里我们 ...
- 【第三方互联】13、码云(Gitee)授权第三方登录
今天我们来学习:码云(Gitee)授权第三方登录,相比之前 支付宝登录.腾讯QQ登录 以及 新浪微博登录 来说,相对于比较简单 一.准备工作 1.登录 码云官网 官网地址:https://gitee. ...
- 【第三方互联】16、微信(wechat)授权第三方登录
第三方平台系列文章,今天终于又开始更新了,今天继续学习微信(wechat)授权第三方登录 一.准备工作 1.申请微信公众测试号 由于我们是个人开发者,我们需要去注册申请一个微信公众平台的测试号 htt ...
- QQ、微信、新浪微博和百度第三方登录
对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取AppKey和A ...
- 实现QQ、微信、新浪微博和百度第三方登录(Android Studio)
实现QQ.微信.新浪微博和百度第三方登录(Android Studio) 前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第 ...
- Android 实现QQ、微信、新浪微博和百度第三方登录
前言: 对于大多数的APP都有第三方登录这个功能,自己也做过几次,最近又有一个新项目用到了第三方登录,所以特意总结了一下关于第三方登录的实现,并拿出来与大家一同分享: 各大开放平台注册账户获取App ...
- 微博授权第三方网站登录
大致流程如下图所述 前置工作 去微博开放平台上(https://open.weibo.com/)申请网站接入 审核通过后会给你的应用分配 App Key 和 App Secret (后续根据授权码获取 ...
- 【第三方互联】10、注册成为支付宝(Alipay)开发者
之前我们已经学习了QQ.新浪微博的第三方授权登录,今天继续学习支付宝的第三方授权登录 比起QQ与新浪微博的操作,支付宝授权增加了获取公钥.私钥等操作 一.访问 支付宝开放平台 官网地址:https:/ ...
- Android实现新浪微博SSO授权登录分享文字图片等功能(WEIBO_ANDROID_SDK V2.3.0 )
新浪开发平台:http://open.weibo.com 新浪微博分享目前分为两种途径: 1,直接在自己的APP,弹出类似Dialog(sina集成)来完成授权,授权成功后可直接分享内容,全程都是在自 ...
最新文章
- 为什么我的python没有run_为什么我的returncode=0而没有stdoutsubprocess.run?
- 线性代数:04 特征值与特征向量 -- 特征值与特征向量
- 如何理解react中的super(),super(props)
- 对象后加一个值 php_PHP 对象使用
- Java基础03 构造器与方法重载
- 框架学习之Hibernate 第十节 事务原理与分析
- jsapi支付签名_微信支付小程序支付全流程
- 判斷作業系統為 64bit 或 32bit z
- 这个火热的社区都升级到2.0了,你还不知道它?
- vc浏览器_自主创业项目推荐,晨兴资本刘芹:我的市场非共识+超配投资原则VC洞见...
- 28.MySQL Variables
- mysql中to_char()和str_to_date()函数
- python 读取PDF内容(推荐pdfplumber)
- 涉密计算机病毒库升级管理,涉密计算机管理制度.doc
- C语言将三个整数进行排序
- SQL Server的安装和要求
- 羊城杯2022--Writeup
- python 全排列 递归中的两种实现
- 使用docx4j 实现word转pdf(linux乱码处理)
- Maxwell 的使用
热门文章
- 英文邮件开场白 opening/greeting,除了I hope this email finds you well,你还可以用什么?
- 第十章 IP的分片与重装
- Excel宏(VBA)类模块的创建与调用
- 7-2 换硬币 (20分)
- R语言缺失值:is.na函数查看数据对象中是否包含缺失值NA、特定数据编码为编码为缺失值NA、na.rm=TRUE参数获得有效的计算结果、complete.cases函数筛选数据、na.omit函数
- 黑客留下的网站后门,可以作什么?
- 人工智能面临的主要威胁是对最终失去实际控制人工智能能力的恐惧
- 哈工大软件构造 复习
- qq申诉网站无法接到服务器,为什么我qq申诉不成功 - 卡饭网
- Flutter自定义Widget之炫酷粒子时钟效果