안녕하세요.
Angular4 Typescript로 카카오 로그인 기능과 사용자 정보 획득 기능을 구현하고 있습니다.
그런데 리스폰스 헤더에서 현재 위치의 엑세스 컨트롤 허용을 해주지 않아
리다이렉트가 되지 않는 문제, 수신한 액세스 토근과 리프레쉬 토근에 접근할 수 없는 문제가 발생하고 있습니다.
따라서 사용자 정보도 얻을 수가 없습니다.
두 경우의 코드는 아래와 같습니다.
-------- 로그인 윈도우 얻기 -------------
if (connection.request.url.endsWith(’/api/kauth/code’) && connection.request.method === RequestMethod.Get) {
// set the parameters to get authorize code
let client_id = ‘11319540bcebc4842a185362c3143574’;
let redirect_uri = ‘http://164.125.34.165:8080/api/kauth/login’;
let response_type = ‘code’;
let url = ‘https://kauth.kakao.com/oauth/authorize?client_id=’ + client_id + ‘&redirect_uri=’ + redirect_uri + ‘&response_type=’ + response_type;
let headers = new Headers({
'Access-Control-Allow-Credentials': 'true',
'Access-Control-Allow-Origin': '*'
});
let realHttp = new Http(realBackend, options);
let requestOptions = new RequestOptions({
method: connection.request.method,
headers: headers,
body: connection.request.getBody(),
url: url,
withCredentials: connection.request.withCredentials,
responseType: connection.request.responseType
});
realHttp.request(connection.request.url, requestOptions)
.subscribe((response: Response) => {
connection.mockRespond(response);
},
(error: Response) => {
alert('Redirect to the Kakao Login Page');
connection.mockRespond(error);
});
return;
}
--------- 인증 토큰 얻기 ---------------
if (connection.request.url.endsWith(’/api/kauth/token’) && connection.request.method === RequestMethod.Post) {
// set the parameters to get authentication token
let grant_type = ‘authorization_code’;
let client_id = ‘11319540bcebc4842a185362c3143574’;
let redirect_uri = ‘http://164.125.34.165:8080/api/kauth/login’;
// get the parameters from post request
let code = JSON.parse(connection.request.getBody())['code'];
// set the request options
connection.request.headers.append('Access-Control-Allow-Headers', 'Access-Control-Allow-Methods, Access-Control-Allow-Origin');
connection.request.headers.append('Access-Control-Allow-Methods', 'GET, POST');
connection.request.headers.append('Access-Control-Allow-Origin', '*');
connection.request.url = 'https://kauth.kakao.com/oauth/token' + '?' + 'grant_type=' + grant_type + '&client_id=' + client_id + '&redirect_uri' + redirect_uri + '&code=' + code;
connection.request.withCredentials = true;
let realHttp = new Http(realBackend, options);
let requestOptions = new RequestOptions({
method: connection.request.method,
headers: connection.request.headers,
url: connection.request.url,
withCredentials: connection.request.withCredentials,
responseType: connection.request.responseType
});
realHttp.request(connection.request.url, requestOptions)
.subscribe((response: Response) => {
connection.mockRespond(response);
},
(error: any) => {
console.log(error);
connection.mockError(error);
});
return;
}