zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    852. Peak Index in a Mountain Array
    841. Keys and Rooms
    832. Flipping an Image
    821. Shortest Distance to a Character
    824. Goat Latin
    如何生成git的公钥和私钥
    学习笔记
    加快JavaScript加载和执行效率
    PO BO VO DTO POJO DAO概念及其作用
    jvm 垃圾回收区的形象说明
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10657074.html
Copyright © 2011-2022 走看看