목차

사용자지원 - Facebook 연동

개요

Facebook 연동은 시스템에서 facebook에 담벼락, 앨범, 프로필 조회 등의 기본 기능을 제공한다.

설명

  ① SignIn : Facebook을 연결하기 위한 연동을 한다. 
  ② Feed : 담벼락에 글을 읽어온다.
  ③ Albums : Facebook에 게시된 앨범을 읽어온다.
  ④ Profile : Facebook에 자신의 프로필을 읽어온다.
  ⑤ Sign Out : Facebook의 연결을 해제한다.

관련소스

유형대상소스명비고
Controlleregovframework.com.uss.ion.fbk.web.EgovFacebookController.javaFacebook 연동을 위한 컨트롤러 클래스
Controlleregovframework.com.uss.ion.fbk.web.FacebookSimpleSignInAdapter.javaFacebook 연동을 위한 로그인 클래스
Controlleregovframework.com.uss.ion.fbk.web.FacebookUserCookieGenerator.javaFacebook 연동을 위한 Cookie관리 클래스
Controlleregovframework.com.uss.ion.fbk.web.FacebookUserInterceptor.javaFacebook 연결을 확인하는 인터셉터 클래스
Serviceegovframework.com.uss.ion.fbk.service.EgovFacebookConfig.javaFacebook을 연동을 위한 JavaConfig
Serviceegovframework.com.uss.ion.fbk.service.FacebookSecurityContext.java연차 관리를 위한 서비스 인터페이스
ServiceImplegovframework.com.uss.ion.fbk.service.impl.EgovSimpleConnectionSignUp.java연차 관리를 위한 서비스 구현 클래스
VOegovframework.com.uss.ion.fbk.service.FacebookUser.javaFacebook userVO 클래스
JSPWEB-INF/jsp/egovframework/com/uss/ion/fbk/EgovFacebookAlbum.jspFacebook 선택한 앨범을 보여주는 페이지
JSPWEB-INF/jsp/egovframework/com/uss/ion/fbk/EgovFacebookAlbums.jspFacebook 앨범 목록을 보여주는 페이지
JSPWEB-INF/jsp/egovframework/com/uss/ion/fbk/EgovFacebookFeed.jspFacebook 담벼락 메시지를 보여주고 입력하는 페이지
JSPWEB-INF/jsp/egovframework/com/uss/ion/fbk/EgovFacebookHome.jspFacebook 연동을 위한 링크페이지
JSPWEB-INF/jsp/egovframework/com/uss/ion/fbk/EgovFacebookProfile.jspFacebook 프로필을 조회하는 페이지
JSPWEB-INF/jsp/egovframework/com/uss/ion/fbk/EgovFacebookSignin.jspFacebook 연동을 위한 페이지
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연동정보관리UserConnectionFacebook 연동정보를 관리

※ context-social.xml 에서 H2로 Embedded-database로 생성함

관련설정

Facebook 개발자 사이트 등록

https://developers.facebook.com/ 사이트에 등록하여 appId, appSecret 발급

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>

egov-com-social.xml 설정

<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 로그인

ActionURLController method
로그인/uss/ion/fbk/facebookSignin.do없음(mvc:view-controller 대체)


로그인 : Facebook 사용을 위해 로그인을 한다.


Facebook 목록

ActionURLController method
목록/uss/ion/fbk/facebook.dohome

facebooklist.jpg

Feed : Facebook 담벼락 목록 조회를 한다.
Albums : Facebook에 등록한 앨범을 조회한다.
Profile : Facebook에 프로필을 조회한다.
Sign Out : Facebook 연동정보 삭제


Facebook feed

ActionURLController method
조회/uss/ion/fbk/feed.doshowFeed
등록/uss/ion/fbk/feed.dopostUpdate

RequestMethod별로 메소드가 구분된다.

post: 입력한 글을 게시판다.


Facebook album

ActionURLController method
조회/uss/ion/fbk/albums.doshowAlbums
상세조회/uss/ion/fbk/album/{albumId}showAlbum



Facebook profile

ActionURLController method
조회/uss/ion/fbk/profile.doprofile

Facebook sign out

ActionURLController method
로그아웃/uss/ion/fbk/profile.do없음(mvc:view-controller 대체)