diff --git a/pom.xml b/pom.xml
index 386e3f5b..77ee104c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -342,13 +342,15 @@
com.github.scribejava
scribejava-apis
- 5.6.0
+
+ 8.3.1
+
com.github.scribejava
scribejava-core
- 5.6.0
+ 8.3.1
diff --git a/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java b/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java
index ed6f1b24..ca59aabe 100644
--- a/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java
+++ b/src/main/java/egovframework/com/ext/oauth/service/OAuthLogin.java
@@ -1,11 +1,27 @@
package egovframework.com.ext.oauth.service;
+import java.io.IOException;
+import java.net.URI;
import java.util.Iterator;
import org.apache.commons.lang3.StringUtils;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.ClientHttpResponse;
+import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.ResponseErrorHandler;
+import org.springframework.web.client.RestTemplate;
+import com.fasterxml.jackson.annotation.JsonInclude.Include;
+import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.github.scribejava.core.builder.ScopeBuilder;
import com.github.scribejava.core.builder.ServiceBuilder;
import com.github.scribejava.core.model.OAuth2AccessToken;
import com.github.scribejava.core.model.OAuthRequest;
@@ -13,6 +29,7 @@ import com.github.scribejava.core.model.Response;
import com.github.scribejava.core.model.Verb;
import com.github.scribejava.core.oauth.OAuth20Service;
+import nlib.cmm.snslogin.GoogleOAuthResponse;
import nlib.user.service.LoginService;
import nlib.util.StringUtil;
@@ -23,12 +40,30 @@ public class OAuthLogin {
public OAuthLogin(OAuthVO oauthVO) {
+ ScopeBuilder scope=new ScopeBuilder();
+ scope.withScope("profile");
+ scope.withScope("openid");
+ scope.withScope("email");
+ scope.withScope("https://www.googleapis.com/auth/user.phonenumbers.read");
+ scope.withScope("https://www.googleapis.com/auth/user.birthday.read");
+
+ if(oauthVO.getService().equals("google"))
+ {
+ this.oauthService = new ServiceBuilder(oauthVO.getClientId())
+ .apiSecret(oauthVO.getClientSecret())
+ .callback(oauthVO.getRedirectUrl())
+ .defaultScope(scope)
+ //.scope("profile")
+ .build(oauthVO.getApi20Instance());
+ }else if(oauthVO.getService().equals("kakao") || oauthVO.getService().equals("naver"))
+ {
+ this.oauthService = new ServiceBuilder(oauthVO.getClientId())
+ .apiSecret(oauthVO.getClientSecret())
+ .callback(oauthVO.getRedirectUrl())
+ //.scope("profile")
+ .build(oauthVO.getApi20Instance());
+ }
- this.oauthService = new ServiceBuilder(oauthVO.getClientId())
- .apiSecret(oauthVO.getClientSecret())
- .callback(oauthVO.getRedirectUrl())
- .scope("profile")
- .build(oauthVO.getApi20Instance());
this.oauthVO = oauthVO;
}
@@ -66,25 +101,36 @@ public class OAuthLogin {
user.setSnsId(resNode.get("id").asText());
// 사용자로그인ID (메일형식) : 네이버 계정 제공하지 않으므로 연락처 이메일을 기본 메일 계정으로 설정
- user.setLoginUserId(resNode.get("email").asText());
+ if (resNode.has("email")) {
+ user.setLoginUserId(StringUtil.getString(resNode.get("email").asText(), ""));
+
+ // 메일주소
+ user.setEmail(StringUtil.getString(resNode.get("email").asText(), ""));
+ }
// 사용자명 (예: 홍길동)
- user.setName(resNode.get("name").asText());
+ if (resNode.has("name")) {
+ user.setName(StringUtil.getString(resNode.get("name").asText(), ""));
+ }
- // 메일주소
- user.setEmail(resNode.get("email").asText());
-
- // 생년월일
- String birthday = StringUtil.getString(resNode.get("birthday").asText(), "0000");
- String birthyear = StringUtil.getString(resNode.get("birthyear").asText(), "0000");
+ // 생년월일
+ String birthday ="0000";
+ String birthyear = "0000";
+ if (resNode.has("birthday")) {
+ birthday = StringUtil.getString(resNode.get("birthday").asText(), "0000");
+ }
+ if (resNode.has("birthyear")) {
+ birthyear = StringUtil.getString(resNode.get("birthyear").asText(), "0000");
+ }
birthday = birthday.replaceAll("-", "");
if(birthday.length() != 4) birthday = "0000";
if(birthyear.length() != 4) birthyear = "0000";
user.setBirthday(birthyear + birthday);
// 성별
- user.setGender(resNode.get("gender").asText());
-
+ if (resNode.has("gender")) {
+ StringUtil.getString(resNode.get("gender").asText(), "");
+ }
// 로그인 성공
user.setValidLogin(true);
@@ -93,24 +139,13 @@ public class OAuthLogin {
// 구글
//------------------------------------
else if (this.oauthVO.isGoogle()) {
- String id = rootNode.get("id").asText();
user.setServiceName(OAuthConfig.GOOGLE_SERVICE_NAME);
- if (oauthVO.isGoogle())
- user.setLoginUserId(id);
- user.setNickName(rootNode.get("displayName").asText());
- JsonNode nameNode = rootNode.path("name");
- String uname = nameNode.get("familyName").asText() + nameNode.get("givenName").asText();
- user.setName(uname);
-
- Iterator iterEmails = rootNode.path("emails").elements();
- while(iterEmails.hasNext()) {
- JsonNode emailNode = iterEmails.next();
- String type = emailNode.get("type").asText();
- if (StringUtils.equals(type, "account")) {
- user.setEmail(emailNode.get("value").asText());
- break;
- }
- }
+ if (rootNode.has("sub"))
+ user.setSnsId(StringUtil.getString(rootNode.get("sub").asText(), ""));
+
+ if (rootNode.has("email"))
+ user.setLoginUserId(StringUtil.getString(rootNode.get("email").asText(), ""));
+
}
//------------------------------------
@@ -118,9 +153,24 @@ public class OAuthLogin {
//------------------------------------
else if (this.oauthVO.isKakao()) {
user.setServiceName(OAuthConfig.KAKAO_SERVICE_NAME);
- JsonNode resNode = rootNode.get("properties");
- user.setLoginUserId(rootNode.get("id").asText());
- user.setNickName(resNode.get("nickname").asText());
+ JsonNode resNode = rootNode.get("kakao_account");
+
+ user.setSnsId((rootNode.get("id").asText() == null) ? "" : rootNode.get("id").asText());
+
+ if (resNode.has("email")) {
+ user.setLoginUserId(StringUtil.getString(resNode.get("email").asText(), ""));
+ user.setEmail(StringUtil.getString(resNode.get("email").asText(), ""));
+ }
+ if (resNode.has("gender"))
+ user.setGender(StringUtil.getString(resNode.get("gender").asText(), ""));
+
+ if (resNode.has("birthday") || resNode.has("birthyear"))
+ user.setLoginUserId((resNode.get("email").asText() == null) ? "" : resNode.get("email").asText());
+
+ if (resNode.has("phone_number"))
+ user.setMobileNo(StringUtil.getString(resNode.get("phone_number").asText(), ""));
+
+
}
return user;
@@ -147,5 +197,4 @@ public class OAuthLogin {
return url;
}
-
}
diff --git a/src/main/java/nlib/user/web/MemberController.java b/src/main/java/nlib/user/web/MemberController.java
index 9e2b0b0a..e1b66ade 100644
--- a/src/main/java/nlib/user/web/MemberController.java
+++ b/src/main/java/nlib/user/web/MemberController.java
@@ -245,9 +245,9 @@ public class MemberController {
* 핸드폰 인증번호 발송
* @exception Exception
*/
- @RequestMapping(value="/member/phoneCertNum.ajax" , method=RequestMethod.POST)
+ @RequestMapping(value="/member/mobileCertNum.ajax" , method=RequestMethod.POST)
public @ResponseBody void phoneCertNum(HttpServletResponse response,HttpServletRequest request) throws Exception{
- String telNo = request.getParameter("telNo");
+ String mobileNo = request.getParameter("mobileNo");
HashMap commandMap = new HashMap();
DataApiReqVO reqVO = new DataApiReqVO();
@@ -259,7 +259,7 @@ public class MemberController {
reqVO.setInfo(commandMap);
- System.out.println(telNo);
+ System.out.println(mobileNo);
System.out.println(CertNumber);
}
@@ -270,18 +270,18 @@ public class MemberController {
*/
@RequestMapping(value="/member/phoneCertNumChk.ajax" , method=RequestMethod.POST)
public @ResponseBody String phoneCertNumChk(HttpServletResponse response,HttpServletRequest request) throws Exception{
- String phone = request.getParameter("phone");
- String phoneCertNum = request.getParameter("phoneCertNum");
+ String mobileNo = request.getParameter("mobileNo");
+ String mobileCertNum = request.getParameter("mobileCertNum");
HashMap commandMap = new HashMap();
- commandMap.put("phone", phone);
- commandMap.put("phoneCertNum", phoneCertNum);
+ commandMap.put("phone", mobileNo);
+ commandMap.put("phoneCertNum", mobileCertNum);
DataApiReqVO reqVO = new DataApiReqVO();
reqVO.setInfo(commandMap);
- System.out.println(phone);
- System.out.println(phoneCertNum);
+ System.out.println(mobileNo);
+ System.out.println(mobileCertNum);
return "true";
}
@@ -392,7 +392,7 @@ public class MemberController {
/**
* 회원가입 SNS 구글인증
* @exception Exception
- */
+ *//*
@RequestMapping(value = "/member/googleCallback.do")
public String googleCallback(@RequestParam(value = "code") String authCode, HttpSession session, Model model,
HttpServletRequest request,RedirectAttributes rttr) throws Exception {
@@ -436,7 +436,7 @@ public class MemberController {
rttr.addFlashAttribute("email",userInfo.get("email"));
return "redirect:/member/insertMemberInfoForm.do";
- }
+ }*/
/**
* 회원가입 SNS 카카오인증
diff --git a/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml
index 37468082..c63c80db 100644
--- a/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml
+++ b/src/main/resources/egovframework/mapper/nlib/user/MemberDAO_SQL.xml
@@ -3,16 +3,15 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
+
-
-
-
-
+
+
+
-
+
@@ -21,7 +20,7 @@
LPAD(RIGHT(MAX(USER_ID),9)+1,9,0)) FROM TMP_SM_USER;
INSERT INTO
- TMP_SM_USER
+ MB_INFO
(USER_ID,LOGIN_USER_ID,USER_DIV,USER_NM,USER_PWD,BIRTHDATE,GENDER,TEL_NO,ZIPCODE,ADDR1,ADDR2,REG_ID,MOD_ID)
VALUES
(#{userId},#{loginUserId},'N',#{userNm},#{userPwd},#{birthdate},#{gender},#{telNo},#{zipcode},#{addr1},#{addr2},#{userId},#{userId})
@@ -39,7 +38,4 @@
AND TEL_NO = #{telNo}
-
-
-
\ No newline at end of file
diff --git a/src/main/resources/egovframework/mapper/nlib/user/UserInfoDAO_SQL.xml b/src/main/resources/egovframework/mapper/nlib/user/UserInfoDAO_SQL.xml
index 9372dc89..44f1c8f2 100644
--- a/src/main/resources/egovframework/mapper/nlib/user/UserInfoDAO_SQL.xml
+++ b/src/main/resources/egovframework/mapper/nlib/user/UserInfoDAO_SQL.xml
@@ -3,16 +3,16 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -21,16 +21,7 @@