[네아로 API 연동을 위해서 해야할 일]
- 네아로 홈페이지에서 ClientId 값과 ClientSecret 값 따오기
- Spring에서 네아로 연동하기
그대로 따라하면 된다.
그대로 따라하면
콘솔 창에서 이렇게 JSon 처럼 생긴 toString값을 출력하는 것을 볼 수 있다.
우리가 하고 싶은 것은, 이 toString 값을 key값에 따라 쪼개서 DB에 넣는 것이다.
[네아로 Json 결과값 처리를 위해서 해야할 일]
- pom.xml에서 라이브러리 설치 _ jsurfer-jsonsimple, json-simple
- Controller에서 JsonParser 이용하여 key 값으로 데이터 쪼개주기
- 쪼갠 데이터를 DB에 넣기
(1)pom.xml에서 라이브러리 설치 _ jsurfer-jsonsimple, json-simple
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<!-- 08/13 네이버 로그인 정보를 연결하려는 처절한 몸부림2 -->
<!-- https://mvnrepository.com/artifact/com.github.jsurfer/jsurfer-jsonsimple -->
<dependency>
<groupId>com.github.jsurfer</groupId>
<artifactId>jsurfer-jsonsimple</artifactId>
<version>1.4.1</version>
</dependency>
<!-- 08/13 네이버 로그인 정보를 연결하려는 처절한 몸부림1 : https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<!-- 08/13 네이버 로그인 연동 : https://mvnrepository.com/artifact/com.github.scribejava/scribejava-core -->
<dependency>
<groupId>com.github.scribejava</groupId>
<artifactId>scribejava-core</artifactId>
<version>2.8.1</version>
</dependency>
|
(2)Controller에서 JsonParser 이용하여 key 값으로 데이터 쪼개주기
(3)쪼갠 데이터를 DB에 넣기
http://songc92.tistory.com/41 이 블로그에서 작성했던 [LoginController.java]에서
callback 함수 안에서 구현 했다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
// 네이버 로그인 처리 메서드 : 네이버 로그인 성공 시 callback 호출 메소드
@RequestMapping(value = "/member/naverCallback", method = { RequestMethod.GET, RequestMethod.POST })
public String callback(Model model, @RequestParam String code, @RequestParam String state, HttpSession session, HttpServletRequest request, Member member)
throws IOException, ParseException, MessagingException {
int resultCnt = 0;
System.out.println("여기는 callback");
OAuth2AccessToken oauthToken;
oauthToken = naverLoginBO.getAccessToken(session, code, state);
// 로그인 사용자 정보를 읽어온다.
apiResult = naverLoginBO.getUserProfile(oauthToken);
System.out.println(naverLoginBO.getUserProfile(oauthToken).toString());
model.addAttribute("result", apiResult);
System.out.println("result" + apiResult);
//DB와 세션에 넣기
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject)jsonParser.parse(naverLoginBO.getUserProfile(oauthToken).toString());
JSONObject response = (JSONObject)jsonObject.get("response");
System.out.println("이것은" + jsonObject.get("response"));
System.out.println("아이디는" + (String)response.get("id"));
member.setId((String)response.get("id"));
member.setPwd("0000"); //DB에서 Not null로 처리했기에 임의로 준 값
member.setName((String) response.get("name"));
member.setEmail((String) response.get("email"));
member.setGender((String)response.get("gender"));
/*member.setBirth((String) response.get("birthday"));*/
System.out.println("멤바아이디는 " + member.getId());
if(mypageMemberService.selectOneMember((String)response.get("id")).getId() == null) {
resultCnt = regiMemberService.insertNoPhotoMember(member);
}
//생략 가능_세션에 담기 위해 사용했다.
request.getSession(true).setAttribute("id", member.getId());
return "member/naverSuccess";
}
|
[regiMemberService.java]
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
package com.bitcamp.Service;
import java.io.File;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import com.bitcamp.Dao.MemberInterfaceDao;
import com.bitcamp.Model.Member;
public class regiMemberService {
@Autowired
SqlSessionTemplate sqlsessionTemplate;
MemberInterfaceDao dao;
public int insertMember(Member member, HttpServletRequest request) throws IllegalStateException, IOException {
dao = sqlsessionTemplate.getMapper(MemberInterfaceDao.class);
int resultCnt = 0;
String imgName = "";
String uploadUri = "/file/photo";
String dir = request.getSession().getServletContext().getRealPath(uploadUri);
System.out.println(dir);
if(!member.getPhotoFile().isEmpty()) {
imgName = member.getId() +"_"+ member.getPhotoFile().getOriginalFilename();
member.getPhotoFile().transferTo(new File(dir, imgName));
member.setPhoto(imgName);
}
resultCnt = dao.memberInsert(member);
return resultCnt;
}
public int insertNoPhotoMember(Member member) {
int resultCnt = 0;
dao = sqlsessionTemplate.getMapper(MemberInterfaceDao.class);
resultCnt = dao.memberInsert(member);
return resultCnt;
}
public boolean idCheck(String id) {
dao = sqlsessionTemplate.getMapper(MemberInterfaceDao.class);
boolean result = false;
Member member = null;
member = dao.selectOneMember(id);
if(member==null) {
result = true;
}
return result;
}
}
|
[MemberInterfaceDao.java]
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
|
package com.bitcamp.Dao;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.bitcamp.Model.Member;
public interface MemberInterfaceDao {
public int memberInsert(Member member);
public Member selectOneMember(String id);
public List<Member> selectMemberList();
public List<Member> selectMemberListPage(@Param("firstRow") int firstRow, @Param("endRow") int endRow);
public int selectMemberCount();
public boolean deleteMember(String id);
public boolean editMember(Member member);
public boolean updatePwd(@Param("id") String id, @Param("pwd") String pwd);
public Member selectOneMemberByName(String name);
}
|
JSonParser 참고 사이트 : https://calyfactory.github.io/%EC%A0%9C%EC%9D%B4%EC%8A%A8%ED%8C%8C%EC%8B%B1/
저혹시mypageMemberService는 어디서 온건지 알 수 있을까요?
답글삭제