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业务系统与社交网站的绑定与解绑相关推荐

  1. java会员卡的绑定和解绑_前后端分离项目 — SpringSocial 绑定与解绑社交账号如微信、QQ...

    1.准备工作 申请QQ.微信相关AppId和AppSecret,这些大家自己到QQ互联和微信开发平台 去申请吧 还有java后台要引入相关的jar包,如下: org.springframework.s ...

  2. Android 蓝牙开发(扫描设备、绑定、解绑)Kotlin版

    Kotlin版 蓝牙开发 (扫描设备.绑定.解绑) 前言 运行效果图 正文 ① 配置项目 ② 布局和样式 ③ 编码 1. 通知栏样式修改 2. 蓝牙设备列表适配器编写 3. 权限请求 4. 初始化蓝牙 ...

  3. google账号解除游戏绑定_附方法!关于物联卡手机号的绑定与解绑

    我们在使用物联卡时第一步都知道绑定手机号,只有绑定了手机号我们才能进行正常的充值.续费.查询等日常操作,当我们不再使用这些物联卡时,你知道怎么解绑吗? 今天,我们以中国移动物联卡为例,咱们来看一下移动 ...

  4. android 绑定服务 解绑服务,安卓案例:绑定和解绑服务

    安卓案例:绑定和解绑服务 一.运行效果 二.实现步骤 1.创建安卓应用BindUnbindService 2.准备背景图片background.jpg,放到mipmap目录里 3.布局资源文件acti ...

  5. Android 蓝牙开发(扫描设备、绑定、解绑)

    Android 蓝牙开发(扫描设备.绑定.解绑) 前言 效果图 一.配置项目 二.布局和样式 三.编码 四.源码 前言 公司最近给我丢了一个蓝牙开发的项目,不了解怎么办呢,那当然是从最基础的开始了,所 ...

  6. jQuery的绑定与解绑方法

    jQuery的4种绑定方法 一.bind()与unbind() I.bind():绑定 1.定义 2.语法 3.参数 4.案例 (1)绑定单一事件 (2)绑定多个事件 II.unbind():解绑 1 ...

  7. js 事件(绑定、解绑、三个阶段、相关方法)

    事件绑定与解绑: DOM0级事件(这类事件可以使用 return false来阻止事件往下执行,包含默认事件) 绑定: html内<input οnclick=''> js中el.οncl ...

  8. 加密狗软加密方案离线绑定与解绑

    最近在做私有云加密部署,使用的是北京某家公司的软锁加密方案,这里记录一下软锁离线绑定.解绑方式. 平台网址:Virbox LM 开发者中心 授权码兑换网址:https://user.lm.virbox ...

  9. vue:组件自定义事件、绑定、解绑事件

    vue:组件自定义事件.绑定.解绑事件 自定义组件绑定事件: 使用方法:在引入组件中的methods定义一个回调方法,在组件标签中使用如下两种方式自定义事件,去到引入的组件的中,使用 this.$em ...

最新文章

  1. 某程序员女友抱怨:男朋友工作975,天天回家说好累,不肯亲热,倒头就睡,难怪程序员没女朋友!...
  2. 树莓派迅雷远程下载 | 树莓派小无相系列
  3. eclipse中使用javap分析java代码备忘
  4. 安卓如何运行python_如何在android上运行Python代码?
  5. minSdkVersion = targetSdkVersion = compileSdkVersion
  6. Nginx安装手册(摘自入云龙老师教案,亲测可用)
  7. Json 与 JS对象的关系与转换
  8. Turbo C 2.0下载地址和安装教程(图解)
  9. java全栈开发主要工作内容,java全栈工程师
  10. Unity3d初级编程--Unity官方教程
  11. 一文带你了解redux的工作流程——action/reducer/store
  12. [工作报告]转载:程序员绩效总结_年终总结怎么写?
  13. HarvestText
  14. java零钱换整程序_Leetcode 322. 零钱兑换
  15. 学生鲜花网页设计作品静态HTML网页模板源码 大学生鲜花商城网站制作 简单鲜花网站网页设计成品
  16. 图片分类-K近邻分类器
  17. [转帖]改变无数人人生的32句实话[ChaseDream论坛]
  18. 【好文转载】产品经理做产品设计的九步法
  19. 美元指数与人民币汇率
  20. Mac安装完Mysql命令不可用解决方案

热门文章

  1. 在微信小程序中绘制图表(part3)
  2. Android smartimageview网络图片查看器
  3. main(int argc,char *argv[ ],char *env)参数详解
  4. SSH集成之导入导出代码示例-页面部分(1)
  5. 在vmware中创建共享磁盘
  6. Problem E: 求最大值和最小值
  7. 计算机英语小短文单词易懂,求计算机英语短文译文。。。。急急急!悬赏10
  8. php找不到库,64位系统下编译PHP找不到库文件问题 | 学步园
  9. mysql jpa 正则_Spring Data JPA 实例查询
  10. 测试面试题集-MySQL数据库灵魂拷问加强版