Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions src/main/java/com/mbtree/mbtree/controller/OAuthController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package com.mbtree.mbtree.controller;

import com.fasterxml.jackson.databind.DatabindContext;
import com.mbtree.mbtree.config.BaseException;
import com.mbtree.mbtree.domain.user.User;
import com.mbtree.mbtree.domain.user.UserRepository;
import com.mbtree.mbtree.service.OAuthService;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import javax.websocket.server.PathParam;
import java.util.HashMap;

@RestController
@AllArgsConstructor
@RequestMapping("/login")
public class OAuthController {
//코드 받아오기
/**
* 카카오 callback
* [GET] /login/kakao/callback
*/


@Autowired
private OAuthService oauthService;


//localhost:8080/login/kakao
@ResponseBody
@GetMapping("/kakao")
public ResponseEntity<String> kakaoCallback(@RequestParam String code) throws BaseException {

// User user = new User();

System.out.println("code : " + code);
String access_Token = oauthService.getKakaoAccessToken(code);
System.out.println("controller : " + access_Token);

HashMap<String, Object> userInfo = oauthService.getUserInfo(access_Token);
System.out.println("login Controller : " + userInfo);


String uuid = (String) userInfo.get("uuid");

// //TODO : OAuthService
// //userRepository에 uuid가 있는지 확인하고, 있으면 넘기고 없으면 저장
// User user = userRepository.findByUuid(uuid);
// if(user == null) {
// //insert
// user.setUuid((String) userInfo.get("uuid"));
// user.setName((String) userInfo.get("nickname"));
// user.setToken(access_Token);
// userRepository.save(user);
// }else{
// //update
// user.setToken(access_Token);
// userRepository.save(user);
// }



return ResponseEntity.ok("사용자 정보 받아옴");

// 클라이언트의 이메일이 존재할 때 세션에 해당 이메일과 토큰 등록
// if (userInfo.get("email") != null) {
// session.setAttribute("userId", userInfo.get("email"));
// session.setAttribute("access_Token", access_Token);
// }
}

@GetMapping("/getfriends")
public Object getFriends(@PathParam(value = "access_token") String access_token){
// oauthService.getFriends(access_token);
System.out.println("accessToken :"+access_token);
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity(headers);
ResponseEntity<String> response;
headers.add("Authorization", "Bearer " + access_token);


// headers.add("Content-type", "application/x-www-form-urlencoded;charset=utf-8");
String redirect_uri="https://kapi.kakao.com/v1/api/talk/friends";

response=restTemplate.exchange(redirect_uri, HttpMethod.GET,request,String.class);

return response;
}
}

This file was deleted.

This file was deleted.

29 changes: 27 additions & 2 deletions src/main/java/com/mbtree/mbtree/service/OAuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonElement;
import com.mbtree.mbtree.domain.user.User;
import com.mbtree.mbtree.domain.user.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


Expand All @@ -12,8 +16,11 @@
import java.util.HashMap;

@Service
@RequiredArgsConstructor
public class OAuthService{

private final UserRepository userRepository;

public static String getKakaoAccessToken(String code) {
String access_Token = "";
String refresh_Token = "";
Expand Down Expand Up @@ -57,7 +64,7 @@ public static String getKakaoAccessToken(String code) {

access_Token = element.getAsJsonObject().get("access_token").getAsString();
refresh_Token = element.getAsJsonObject().get("refresh_token").getAsString();
// DB 저장

System.out.println("access_token : " + access_Token);
System.out.println("refresh_token : " + refresh_Token);

Expand All @@ -70,7 +77,7 @@ public static String getKakaoAccessToken(String code) {
return access_Token;
}
//GetUserInfo
public static HashMap<String, Object> getUserInfo(String access_Token) {
public HashMap<String, Object> getUserInfo(String access_Token) {

// 요청하는 클라이언트마다 가진 정보가 다를 수 있기에 HashMap타입으로 선언
HashMap<String, Object> userInfo = new HashMap<>();
Expand Down Expand Up @@ -118,8 +125,26 @@ public static HashMap<String, Object> getUserInfo(String access_Token) {
e.printStackTrace();
}

String uuid = (String) userInfo.get("uuid");
//userRepository에 uuid가 있는지 확인하고, 있으면 넘기고 없으면 저장

User user = new User();
if(userRepository.findByUuid(uuid) == null) {
user.setUuid((String) userInfo.get("uuid"));
user.setName((String) userInfo.get("nickname"));
user.setToken(access_Token);
userRepository.save(user);
}else{
user = userRepository.findByUuid(uuid);
user.setToken(access_Token);
userRepository.save(user);
}

return userInfo;
}





}