KOSTA교육/수업

[57/100] 240704

이원혁 2024. 7. 4. 22:04
반응형

Google oAuth2.0

 

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

@Service
public class GoogleOAuthService {

    private final String clientId 			= "s";
    private final String clientSecret 		= "e";
    private final String redirectUri 		= "c";
    private final String tokenEndpoint 		= "r";
    private final String userInfoEndpoint 	= "et";

    public String getGoogleLoginUrl() {

    	//https://accounts.google.com/o/oauth2/v2/auth?client_id=132153140522-46cvv4nbdb8gi5soug53972g2vaa9hgn.apps.googleusercontent.com&redirect_uri=http://localhost:8089/oauth2callback&response_type=code&scope=email profile
    	String scope = "https://www.googleapis.com/auth/userinfo.profile";
    	String reqUrl = "https://accounts.google.com/o/oauth2/v2/auth?client_id=" + clientId
                + "&redirect_uri="+redirectUri+"&response_type=code&scope=email%20profile%20openid&access_type=offline";
        return reqUrl;
    }

    public String getAccessToken(String authorizationCode) {
        RestTemplate restTemplate = new RestTemplate();
        Map<String, String> params = new HashMap<>();
        params.put("code"			, authorizationCode);
        params.put("client_id"		, clientId);
        params.put("client_secret"	, clientSecret);
        params.put("redirect_uri"	, redirectUri);
        params.put("grant_type"		, "authorization_code");

        //"https://oauth2.googleapis.com/token";
        Map<String, String> response = restTemplate.postForObject(tokenEndpoint, params, Map.class);
        return response.get("access_token");
    }

    public String getUserInfo(String accessToken) {
        RestTemplate restTemplate = new RestTemplate();
        //"https://www.googleapis.com/userinfo/v2/me";
        String url = userInfoEndpoint + "?access_token=" + accessToken;
        return restTemplate.getForObject(url, String.class);
    }
}
반응형