일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 다형성
- 전자정부
- 전체텍스트
- while
- full text indexing
- jquery
- angular2
- 추상클래스
- 단축키
- IBatis procedure
- 25가지 효율적인 sql작성법
- 상속
- Full text
- 상속예제
- 다운캐스팅
- 전체
- 페이징
- 자바
- 야구게임
- 자바 야구게임
- 업캐스팅
- 가변인자
- Random
- 이클립스
- 형변환
- 스프링
- Login with OAuth Authentication
- Validations
- 로또
- Today
- Total
nalaolla
[Facebook] 간단한 Login 인증 만들기.. 본문
spring-social-facebook 을 사용하기로 하였다~
현재 spring-social-facebook 버전은 1.1.0 을 지원하고있는데.... 이게 이상하게 POM 에서 에러가 난다.. ㅠㅠ
(Missing artifact org.springframework.social:spring-social-core)
구글링 결과 1.1.1을 쓰라는 얘기가.... ㅎㄷㄷㄷ 에러가 없어졌다 구글짱! ㅎㅎ
(http://stackoverflow.com/questions/26593799/maven-cannot-find-spring-social)
Maven 을 사용하니까 위 구문을 추가해줬다. Maven 짱짱맨 ... 근데 Gradle 도 써보고싶다... Gradle의 경우 아래~
다른 블로그나 사이트에서는 spring-social-facebook 뿐만 아니라 core도 같이 넣어주는데 왜 여기는 facebook 만 있는지 궁금할 수도 있다... Spring social guide 를 보고 판단내린 결과 core의 경우 Saas 를 이용한 모든 서비스 Connection 을 제공하는 것 같은데... 현재 진행하는 프로젝트에서는 facebook 만 해야되니... 굳이 다 가져다 쓸 필요가 없다고 느꼈다...
실제로 Facebook Data 에 접근하는 guide 를 봐도 (http://spring.io/guides/gs/accessing-facebook/)
core 는 사용하고 있지 않다. spring-social-facebook 만 사용하여 접근할 뿐이다...
Restful API 개발자로 지내다 보니 효율은 높이고 낭비를 없애는 습관이 생겼는데.... 저런게 바로 낭비제거아닐까...??
안쓰는 라이브러리들은 용량만 차지할뿐 쓸데가 없다고 생각한다....(rest api 인데 war 용량이 너무크다?? 한번쯤 살펴봅시다)
Lib 추가되었으면 이제 인증을 해보도록 하자... Facebook 의 경우 OAuth 방식을 제공하는데
이번 프로젝트에는 OAuth 2.0 방식으로 사용하였다. OAuth 2.0 방식은 여러 사이트들에 자세히 나와있긴한데
한국사람이다보니 한글로 설명되어있는 링크를 걸자면 Daum 이 적절하게 설명을 잘 해 놓은 것 같다.
http://dna.daum.net/apis/oauth2 <- 딱히 홍보하는건 아니지만 그래도 설명이 좋다. 어차피 개발자 참고용이니
여하튼 로그인 인증부분으로 넘어가서 얘길하자면 Facebook 에서 개발자 권한 받고 그런것들은 다른사이트에서도 많이 설명하니 바로 소스로 넘어가서 설명을 시작하려한다.
나는 Spring Security 를 사용하지 않으므로 일반적인 코드로 사용하였는데
FacebookConnectionFactory 을 사용해서 요청주소값을 만든다. (id, secret 필요)
만들어진 주소를 호출하게되면 인증을 시작하게되고 사용자의 access token이 발급되는데 이 access token으로 사용자 정보 및 기타 정보를 획득할 수 있다.
Service 단에 FacebookConnectionFactory , OAuth2Parameters 부분을 주입시켰다.
ID, Secret 은 노출시키지 않기위해 Jasypt 를 사용해서 암호화 하였으며 굳이 암호화가 필요 없으신 분들은
그냥 쓰셔도 된다.
Properties 부분을 보자면
ENC() 로 감싼 부분은 Jasypt 로 암호화 한 부분이고, 그냥 쓰실분들은 프로퍼티 사용없이 바로 대입하시면 된다.
Scope의 경우 comma (,) 를 사용해서 지정할 수 있다 Scope는 Facebook 의 Permission 을 확인하면 된다.
https://developers.facebook.com/docs/facebook-login/permissions/v2.2?locale=ko_KR
사용자의 access token 이 발급되면 이제 해당값으로 사용자의 여러 정보를 갖고올 수 있다.
facebook 에서 callback 을 호출하게되면 code 값을 받을 수 있는데
@RequestParam("code") String code 스프링에서는 다음과 같이 해당 값을 받을 수 있다. validation은 굳이 하지 않아도..
저 Code 값을 이용해서 사용자 정보를 획득할 수 있는데 코드로 보면 다음과 같다.
'SPRING' 카테고리의 다른 글
spring + java web application 다국어 지원 설정 (1) | 2016.06.22 |
---|---|
스프링의 계층별, 기능별 패키지 구성하기 (0) | 2016.06.20 |
google oauth2.0 login 넣기~ (restful 방식) (0) | 2016.06.02 |
twitter4j를 통한 twitter 로그인 연동 (0) | 2016.06.02 |
Spring Framework: MVC 작성방법 (non-annotation) (0) | 2016.05.31 |