인증 코드를 사용해 웹 및 웹앱에서 토큰을 얻을 수 있습니다.
[GET] https://auth.smtown.com/oauth/authorize?
client_id=0f19f14f-6f4a-43d4-b136-11111111111
&response_type=code
&redirect_uri=http://localhost:8080/popup/callback
&scope=profile.info
&state=xyz
&lang=en
| 파라메타 | 필수여부 | 설명 |
|---|---|---|
client_id |
필수 | 앱 등록 후 발급되는 client_id 입니다. |
response_type |
필수 | code 고정 |
redirect_uri |
필수 | 인증 결과를 보내는 앱의 redirect_uri 입니다. 앱의 redirect URL 중 하나와 일치해야 합니다. |
scope |
필수 | 사용자 동의가 필요한 리소스의 범위입니다. 공백으로 구분할 수 있습니다. |
state |
옵션 | 요청 위조 공격을 방지하기 위해 임의 생성 된 고유값입니다. 발송 된 값과 반환 된 값을 비교하여 위조를 방지할 수 있습니다. 가급적 요청마다 새로운 랜덤한 문자열을 만들어 사용하시고, redirect_uri에서 값이 일치하는지 확인하세요. (DB 저장 혹은 Session에 저장해주세요) |
reauthenticate |
옵션 | 로그인을 유지하지 않고 로그인창을 사용해야하는 경우, reauthenticate=true를 사용하시면 창이 열릴 때마다 인증을 요구합니다.
|
lang |
옵션 | 로그인 화면은 기본적으로 header의 accept-language를 기준으로 다국어를 지원합니다. 강제로 변환하고자 할 경우에 사용하세요. ko, en, ja, zh 기본값은 en 입니다. |
[GET] http://localhost:8080/popup/callback?
code=Hs56CB
&state=xyz
| 파라메타 | 설명 |
|---|---|
code |
요청한 authorization_code 입니다. 이 코드를 사용하여 리소스에 대한 access token을 요청할 수 있습니다. 만약 전달받은 코드가 빈 값일 경우 오류처리 해주시기 바랍니다. |
state |
요청 시 전달 된 state 값을 그대로 redirect_uri에 전달합니다. 요청 시 state 값과 전달 받은 state가 일치하는지 확인해주세요. |
<a href="#" id="btn-login">로그인</a>
<script>
window.onload = function(){
document.getElementById('btn-login').onclick = function(e){
window.open("https://auth.smtown.com/oauth/authorize?" +
"client_id=0f19f14f-6f4a-43d4-b136-11111111111" +
"&redirect_uri=http://localhost:8080/popup/callback" +
"&response_type=code" +
"&scope=profile.info" +
"&state=xyz", "SMTOWN Authorize", "width=500,height=545");
e.preventDefault();
}
}
</script>
다음 - 응답 받은 code를 이용해 access token 받기