이것도 나에게 맞는 자료를 찾느라 너무나도 힘들었다. 그래도 겨우겨우 찾아서 나한테 맞추는 것에 성공을 하였고, 이후에는 페이스북, 네이버, 카카오톡까지 해보려고 한다.

먼저 해야 할일

  1. 구글 API사이트에 들어가서 프로젝트를 생성합니다.
  2. 사용자 인증정보에 들어가서 OAuth 동의 화면에 가서 제품 이름을 만들어서 저장을 합니다.
  3. 사용자 인증 정보를 다시 가게되면 아이디와 보안비밀이 생성됩니다.
  4. 하단 승인된 자바스크립트 원본에 자신의 사이트 주소 (ex. http://localhost) 를 적어줍니다.
  5. 승인된 리디렉션 URI에는 승인된 후 이동할 url를 적어줍니다.

pom.xml 추가하기

소셜 로그인 라이브러리 추가(구글편)

  <!-- 구글 소셜 로그인 구현 -->
  <dependency>
    <groupId>org.springframework.social</groupId>
    <artifactId>spring-social-google</artifactId>
    <version>1.0.0.RELEASE</version>
  </dependency>
  <!-- 구글 소셜 로그인 구현 -->

dispatcher-servlet 수정

여기서 아이디와 보안비밀번호를 적어줍니다.

  <!-- google Class Bean설정 추가 -->
  <!-- 클라이언트ID와 보안비밀 세팅 -->
  <bean id="googleConnectionFactory"
  class="org.springframework.social.google.connect.GoogleConnectionFactory">
    <constructor-arg value="***************************" />
    <constructor-arg value="***********************" />
  </bean>

  <!-- 승인된 자바스크립트 원본과 승인된 리디렉션 URI -->
  <bean id="googleOAuth2Parameters" class="org.springframework.social.oauth2.OAuth2Parameters">
    <property name="scope" value="https://www.googleapis.com/auth/plus.login" />
    <property name="redirectUri" value="내가 프로젝트에 적은 url" />
  </bean>
  <!-- google Class Bean설정 추가 -->
  • 하단 redirectUri에는 자신이 구글 프로젝트에 적었던 승인된 후 주소와 똑같이 적어줍니다.
  • 안그러면 에러 뜹니다.

controller 구현

  • 로그인 페이지를 불러오는 컨트롤러를
  @Autowired
  private GoogleConnectionFactory googleConnectionFactory;

  @Autowired
  private OAuth2Parameters googleOAuth2Parameters;

  //로그인 페이지로 이동하는 컨트롤러
  @RequestMapping(value = "login.do")
  public String initLogin(Model model, HttpSession session) throws Exception {

  	/* 구글code 발행 */
  	OAuth2Operations oauthOperations = googleConnectionFactory.getOAuthOperations();

    /* 로그인페이지 이동 url생성 */
  	String url = oauthOperations.buildAuthorizeUrl(GrantType.AUTHORIZATION_CODE, googleOAuth2Parameters);

  	model.addAttribute("google_url", url);

  	/* 생성한 인증 URL을 Model에 담아서 전달 */
  	return "page1/login.all";
  }

  • 로그인이 성공하면 불러오는 컨트롤러

  // 구글 Callback호출 메소드
  @RequestMapping(value = "oauth2callback.do", method = { RequestMethod.GET, RequestMethod.POST })
  public String googleCallback(Model model, @RequestParam String code) throws IOException {

    System.out.println("Google login success");

    //저는 성공하면 메인페이지로 리다이렉트합니다.
    return "redirect:main.do";
  }

로그인 버튼 구현

간단하게 로그인 버튼을 구현합니다.

  <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


  <div id="google_id_login" style="text-align: center">
    <a href="${google_url}">
      구글 로그인
    </a>
  </div>


Referece