사용자지원 - Facebook 연동
개요
Facebook 연동은 시스템에서 facebook에 담벼락, 앨범, 프로필 조회 등의 기본 기능을 제공한다.
설명
① SignIn : Facebook을 연결하기 위한 연동을 한다.
② Feed : 담벼락에 글을 읽어온다.
③ Albums : Facebook에 게시된 앨범을 읽어온다.
④ Profile : Facebook에 자신의 프로필을 읽어온다.
⑤ Sign Out : Facebook의 연결을 해제한다.
관련소스
관련소스
| 유형 | 대상소스명 | 비고 |
| Controller | egovframework.com.uss.ion.fbk.web.EgovFacebookController.java | Facebook 연동을 위한 컨트롤러 클래스 |
| Controller | egovframework.com.uss.ion.fbk.web.FacebookSimpleSignInAdapter.java | Facebook 연동을 위한 로그인 클래스 |
| Controller | egovframework.com.uss.ion.fbk.web.FacebookUserCookieGenerator.java | Facebook 연동을 위한 Cookie관리 클래스 |
| Controller | egovframework.com.uss.ion.fbk.web.FacebookUserInterceptor.java | Facebook 연결을 확인하는 인터셉터 클래스 |
| Service | egovframework.com.uss.ion.fbk.service.EgovFacebookConfig.java | Facebook을 연동을 위한 JavaConfig |
| Service | egovframework.com.uss.ion.fbk.service.FacebookSecurityContext.java | 연차 관리를 위한 서비스 인터페이스 |
| ServiceImpl | egovframework.com.uss.ion.fbk.service.impl.EgovSimpleConnectionSignUp.java | 연차 관리를 위한 서비스 구현 클래스 |
| VO | egovframework.com.uss.ion.fbk.service.FacebookUser.java | Facebook userVO 클래스 |
| JSP | WEB-INF/jsp/egovframework/공통컴포넌트/com/uss/ion/fbk/EgovFacebookAlbum.jsp | Facebook 선택한 앨범을 보여주는 페이지 |
| JSP | WEB-INF/jsp/egovframework/공통컴포넌트/com/uss/ion/fbk/EgovFacebookAlbums.jsp | Facebook 앨범 목록을 보여주는 페이지 |
| JSP | WEB-INF/jsp/egovframework/공통컴포넌트/com/uss/ion/fbk/EgovFacebookFeed.jsp | Facebook 담벼락 메시지를 보여주고 입력하는 페이지 |
| JSP | WEB-INF/jsp/egovframework/공통컴포넌트/com/uss/ion/fbk/EgovFacebookHome.jsp | Facebook 연동을 위한 링크페이지 |
| JSP | WEB-INF/jsp/egovframework/공통컴포넌트/com/uss/ion/fbk/EgovFacebookProfile.jsp | Facebook 프로필을 조회하는 페이지 |
| JSP | WEB-INF/jsp/egovframework/공통컴포넌트/com/uss/ion/fbk/EgovFacebookSignin.jsp | Facebook 연동을 위한 페이지 |
| Message properties | /resources/egovframework/message/com/uss/ion/fbk/message_en.properties | 페이스북 연동을 위한 Message properties(한글) |
| Message properties | /resources/egovframework/message/com/uss/ion/fbk/message_ko.properties | 페이스북 연동을 위한 Message properties(영문) |
관련테이블
관련테이블
| 테이블명 | 테이블명(영문) | 비고 |
| Facebook연동정보관리 | UserConnection | Facebook 연동정보를 관리 |
※ context-social.xml 에서 H2로 Embedded-database로 생성함
관련설정
Facebook 개발자 사이트 등록
globals.properties 설정
# Social(Facebook, Oauth 컴포넌트 사용시 활용)
facebook.appId =
facebook.appSecret =
Maven 설정
<!-- facebook 연동시 추가 -->
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-facebook</artifactId>
<version>2.0.3.RELEASE</version>
<exclusions>
<exclusion>
<artifactId>spring-web</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
<exclusion>
<artifactId>spring-webmvc</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.4</version>
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.180</version>
</dependency>
context-social.xml 설정
<!-- facebook 연동 설정 -->
<bean id="connectionFactory" class="org.springframework.social.facebook.connect.FacebookConnectionFactory">
<constructor-arg value="${facebook.appId}" />
<constructor-arg value="${facebook.appSecret}" />
</bean>
<bean id="textEncryptor" class="org.springframework.security.crypto.encrypt.Encryptors" factory-method="noOpText" />
<jdbc:embedded-database id="social.dataSource" type="H2">
<jdbc:script location="classpath:/social.sql" />
</jdbc:embedded-database>
<mvc:default-servlet-handler />
<bean class="org.springframework.social.connect.web.ProviderSignInController">
<constructor-arg ref="connectionFactoryLocator" />
<constructor-arg ref="usersConnectionRepository" />
<constructor-arg>
<bean class="egovframework.com.uss.ion.fbk.web.FacebookSimpleSignInAdapter"/>
</constructor-arg>
<property name="signInUrl" value="/uss/ion/fbk/facebookSignin.do"/>
<property name="postSignInUrl" value="/uss/ion/fbk/facebook.do"/>
</bean>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/uss/ion/fbk/**" />
<bean class="egovframework.com.uss.ion.fbk.web.FacebookUserInterceptor" >
<constructor-arg ref="usersConnectionRepository"/>
</bean>
</mvc:interceptor>
</mvc:interceptors>
<mvc:view-controller path="/uss/ion/fbk/facebook.do" view-name="egovframework/com/uss/ion/fbk/EgovFacebookHome" />
<mvc:view-controller path="/uss/ion/fbk/facebookSignin.do" view-name="egovframework/com/uss/ion/fbk/EgovFacebookSignin" />
<mvc:view-controller path="/uss/ion/fbk/facebookSignout.do" view-name="egovframework/com/uss/ion/fbk/EgovFacebookHome" />
EgovWebApplicationInitializer.java 설정
//-------------------------------------------------------------
// HiddenHttpMethodFilter 설정 (Facebook OAuth 사용시 설정)
//-------------------------------------------------------------
FilterRegistration.Dynamic hiddenHttpMethodFilter = servletContext.addFilter("hiddenHttpMethodFilter", new HiddenHttpMethodFilter());
hiddenHttpMethodFilter.addMappingForUrlPatterns(null, false, "/*");
관련화면 및 수행메뉴얼
Facebook 로그인
Facebook 로그인
| Action | URL | Controller method |
| 로그인 | /uss/ion/fbk/facebookSignin.do | 없음(mvc:view-controller 대체) |

로그인 : Facebook 사용을 위해 로그인을 한다.
Facebook 목록
Facebook 목록
| Action | URL | Controller method |
| 목록 | /uss/ion/fbk/facebook.do | home |

Feed : Facebook 담벼락 목록 조회를 한다.
Albums : Facebook에 등록한 앨범을 조회한다.
Profile : Facebook에 프로필을 조회한다.
Sign Out : Facebook 연동정보 삭제
Facebook feed
Facebook feed
| Action | URL | Controller method |
| 조회 | /uss/ion/fbk/feed.do | showFeed |
| 등록 | /uss/ion/fbk/feed.do | postUpdate |
RequestMethod별로 메소드가 구분된다.
post: 입력한 글을 게시판다.
Facebook album
Facebook album
| Action | URL | Controller method |
| 조회 | /uss/ion/fbk/albums.do | showAlbums |
| 상세조회 | /uss/ion/fbk/album/{albumId} | showAlbum |
Facebook profile
Facebook profile
| Action | URL | Controller method |
| 조회 | /uss/ion/fbk/profile.do | profile |
Facebook sign out
Facebook sign out
| Action | URL | Controller method |
| 로그아웃 | /uss/ion/fbk/profile.do | 없음(mvc:view-controller 대체) |