SpringSocial业务系统与社交网站的绑定与解绑
SpringSocial提供了了以下三个服务,我们要做的仅仅是调用它们的服务,但是SpringSocial仅仅只提供了数据,没有提供视图
⒈拿到所有社交网站与业务系统的绑定信息
SpringSocial已经提供了相应的数据,但并没有提供视图,相关的代码写在ConnectController中,核心代码如下:
1 @RequestMapping( 2 method = {RequestMethod.GET} 3 ) 4 public String connectionStatus(NativeWebRequest request, Model model) { 5 this.setNoCache(request); 6 this.processFlash(request, model); 7 Map<String, List<Connection<?>>> connections = this.connectionRepository.findAllConnections(); 8 model.addAttribute("providerIds", this.connectionFactoryLocator.registeredProviderIds()); 9 model.addAttribute("connectionMap", connections); 10 return this.connectView(); 11 }
这个方法的返回值是一个View,路径是connect/status,我们只需要实现这个视图就可以了。
1 package cn.coreqi.social; 2 3 import com.fasterxml.jackson.databind.ObjectMapper; 4 import org.apache.commons.collections4.CollectionUtils; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.social.connect.Connection; 7 import org.springframework.stereotype.Component; 8 import org.springframework.web.servlet.view.AbstractView; 9 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 import java.util.HashMap; 13 import java.util.List; 14 import java.util.Map; 15 16 @Component("connect/status") 17 public class CoreqiConnectionStatusView extends AbstractView { 18 19 @Autowired 20 private ObjectMapper objectMapper; 21 @Override 22 protected void renderMergedOutputModel(Map<String, Object> map, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { 23 Map<String, List<Connection<?>>> connections = (Map<String, List<Connection<?>>>) map.get("connectionMap"); 24 Map<String,Boolean> result = new HashMap<>(); 25 for(String key:connections.keySet()){ 26 result.put(key, CollectionUtils.isNotEmpty(connections.get(key))); 27 } 28 httpServletResponse.setContentType("application/json;charset=UTF-8"); 29 httpServletResponse.getWriter().write(objectMapper.writeValueAsString(result)); 30 } 31 }
⒉业务系统与社交网站绑定
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>绑定</title> 6 </head> 7 <body> 8 <h2>标准绑定页面</h2> 9 <!--form 的action地址是固定的格式,前面是connect,后面是OAuth的providerId--> 10 <form action="/connect/weixin" method="post"> 11 <button type="submit">绑定微信</button> 12 </form> 13 </body> 14 </html>
绑定成功后跳转到connect/{providerId}Connected这个视图,上面的例子将会跳转到connect/weixinConnected这个视图上。
1 package cn.coreqi.social; 2 3 import org.springframework.stereotype.Component; 4 import org.springframework.web.servlet.view.AbstractView; 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7 import java.util.Map; 8 9 @Component("connect/weixinConnect,connect/weixinConnected") //如果当前绑定成功的视图需要重用,请注释@Component注解 10 //在配置类中以@Bean的形式注册当前类,并指定多个不同的name属性。 11 public class CoreqiConnectionView extends AbstractView { 12 13 @Override 14 protected void renderMergedOutputModel(Map<String, Object> map, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { 15 httpServletResponse.setContentType("text/html;charset=UTF-8"); 16 if(map.get("connection") == null){ 17 httpServletResponse.getWriter().write("<h3>解绑成功</h3>"); 18 }else{ 19 httpServletResponse.getWriter().write("<h3>绑定成功</h3>"); 20 } 21 } 22 }
⒊业务系统与社交网站解绑
1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>绑定</title> 6 </head> 7 <body> 8 <h2>标准绑定页面</h2> 9 <!--form 的action地址是固定的格式,前面是connect,后面是OAuth的providerId--> 10 <!--解除绑定只需将post请求改为delete请求,当然,form表单是无法发送delete请求的,我只是告诉你--> 11 <form action="/connect/weixin" method="delete"> 12 <button type="submit">绑定微信</button> 13 </form> 14 </body> 15 </html>
解绑成功后跳转到connect/{providerId}Connect这个视图(相较于绑定,视图名去掉了ed而已),上面的例子将会跳转到connect/weixinConnect这个视图上。
1 package cn.coreqi.social; 2 3 import org.springframework.stereotype.Component; 4 import org.springframework.web.servlet.view.AbstractView; 5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7 import java.util.Map; 8 9 @Component("connect/weixinConnect,connect/weixinConnected") //如果当前绑定成功的视图需要重用,请注释@Component注解 10 //在配置类中以@Bean的形式注册当前类,并指定多个不同的name属性。 11 public class CoreqiConnectionView extends AbstractView { 12 13 @Override 14 protected void renderMergedOutputModel(Map<String, Object> map, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { 15 httpServletResponse.setContentType("text/html;charset=UTF-8"); 16 if(map.get("connection") == null){ 17 httpServletResponse.getWriter().write("<h3>解绑成功</h3>"); 18 }else{ 19 httpServletResponse.getWriter().write("<h3>绑定成功</h3>"); 20 } 21 } 22 }
转载于:https://www.cnblogs.com/fanqisoft/p/10657074.html
SpringSocial业务系统与社交网站的绑定与解绑相关推荐
- java会员卡的绑定和解绑_前后端分离项目 — SpringSocial 绑定与解绑社交账号如微信、QQ...
1.准备工作 申请QQ.微信相关AppId和AppSecret,这些大家自己到QQ互联和微信开发平台 去申请吧 还有java后台要引入相关的jar包,如下: org.springframework.s ...
- Android 蓝牙开发(扫描设备、绑定、解绑)Kotlin版
Kotlin版 蓝牙开发 (扫描设备.绑定.解绑) 前言 运行效果图 正文 ① 配置项目 ② 布局和样式 ③ 编码 1. 通知栏样式修改 2. 蓝牙设备列表适配器编写 3. 权限请求 4. 初始化蓝牙 ...
- google账号解除游戏绑定_附方法!关于物联卡手机号的绑定与解绑
我们在使用物联卡时第一步都知道绑定手机号,只有绑定了手机号我们才能进行正常的充值.续费.查询等日常操作,当我们不再使用这些物联卡时,你知道怎么解绑吗? 今天,我们以中国移动物联卡为例,咱们来看一下移动 ...
- android 绑定服务 解绑服务,安卓案例:绑定和解绑服务
安卓案例:绑定和解绑服务 一.运行效果 二.实现步骤 1.创建安卓应用BindUnbindService 2.准备背景图片background.jpg,放到mipmap目录里 3.布局资源文件acti ...
- Android 蓝牙开发(扫描设备、绑定、解绑)
Android 蓝牙开发(扫描设备.绑定.解绑) 前言 效果图 一.配置项目 二.布局和样式 三.编码 四.源码 前言 公司最近给我丢了一个蓝牙开发的项目,不了解怎么办呢,那当然是从最基础的开始了,所 ...
- jQuery的绑定与解绑方法
jQuery的4种绑定方法 一.bind()与unbind() I.bind():绑定 1.定义 2.语法 3.参数 4.案例 (1)绑定单一事件 (2)绑定多个事件 II.unbind():解绑 1 ...
- js 事件(绑定、解绑、三个阶段、相关方法)
事件绑定与解绑: DOM0级事件(这类事件可以使用 return false来阻止事件往下执行,包含默认事件) 绑定: html内<input οnclick=''> js中el.οncl ...
- 加密狗软加密方案离线绑定与解绑
最近在做私有云加密部署,使用的是北京某家公司的软锁加密方案,这里记录一下软锁离线绑定.解绑方式. 平台网址:Virbox LM 开发者中心 授权码兑换网址:https://user.lm.virbox ...
- vue:组件自定义事件、绑定、解绑事件
vue:组件自定义事件.绑定.解绑事件 自定义组件绑定事件: 使用方法:在引入组件中的methods定义一个回调方法,在组件标签中使用如下两种方式自定义事件,去到引入的组件的中,使用 this.$em ...
最新文章
- 某程序员女友抱怨:男朋友工作975,天天回家说好累,不肯亲热,倒头就睡,难怪程序员没女朋友!...
- 树莓派迅雷远程下载 | 树莓派小无相系列
- eclipse中使用javap分析java代码备忘
- 安卓如何运行python_如何在android上运行Python代码?
- minSdkVersion = targetSdkVersion = compileSdkVersion
- Nginx安装手册(摘自入云龙老师教案,亲测可用)
- Json 与 JS对象的关系与转换
- Turbo C 2.0下载地址和安装教程(图解)
- java全栈开发主要工作内容,java全栈工程师
- Unity3d初级编程--Unity官方教程
- 一文带你了解redux的工作流程——action/reducer/store
- [工作报告]转载:程序员绩效总结_年终总结怎么写?
- HarvestText
- java零钱换整程序_Leetcode 322. 零钱兑换
- 学生鲜花网页设计作品静态HTML网页模板源码 大学生鲜花商城网站制作 简单鲜花网站网页设计成品
- 图片分类-K近邻分类器
- [转帖]改变无数人人生的32句实话[ChaseDream论坛]
- 【好文转载】产品经理做产品设计的九步法
- 美元指数与人民币汇率
- Mac安装完Mysql命令不可用解决方案
热门文章
- 在微信小程序中绘制图表(part3)
- Android smartimageview网络图片查看器
- main(int argc,char *argv[ ],char *env)参数详解
- SSH集成之导入导出代码示例-页面部分(1)
- 在vmware中创建共享磁盘
- Problem E: 求最大值和最小值
- 计算机英语小短文单词易懂,求计算机英语短文译文。。。。急急急!悬赏10
- php找不到库,64位系统下编译PHP找不到库文件问题 | 学步园
- mysql jpa 正则_Spring Data JPA 实例查询
- 测试面试题集-MySQL数据库灵魂拷问加强版