연동하기
비바톤 로그인의 상세 구현 페이지입니다. 인증코드 요청, Redirect URL 처리, 토큰 발급, 사용자 정보 조회까지 실제 API 호출 흐름을 단계별로 설명합니다.
01 인증코드 요청
인증코드 요청은 비바톤 로그인 화면을 호출하고, 사용자 로그인을 거쳐 인증 코드 발급을 요청하는 API입니다. 이 기능은 비바톤 서버에 로그인 세션이 존재하는지에 따라 사용자 인증 단계가 달라질 수 있습니다.
세션이 없다면 계정 ID와 비밀번호 입력 화면이 먼저 노출되고, 세션이 있는 경우에는 곧바로 인증 코드를 받을 수 있습니다. 파라미터가 올바르지 않으면 페이지를 찾을 수 없음과 같은 오류 화면이 표시될 수 있습니다.
GET /oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=read_profile&state={STATE}
location.href = "https://bauth.bbaton.com/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=read_profile&state={STATE}";
window.open(
"https://bauth.bbaton.com/oauth/authorize?client_id={CLIENT_ID}&redirect_uri={REDIRECT_URI}&response_type=code&scope=read_profile",
"bbaton",
"width=400, height=500"
);
02 Redirect Url 로 인증코드 받기
인증 코드 요청의 응답은 redirect_uri 로 Redirect 되며, Location에 인증 코드가 담긴 쿼리 스트링 또는 에러 메시지가 포함됩니다. 클라이언트 서버는 이 요청을 받아 인증 코드를 추출하거나, 상황에 맞는 에러 페이지를 보여주도록 처리해야 합니다.
인증 요청 성공 시 http://redirect_uri?code={CODE} 형태로 코드가 반환됩니다.
redirect_uri 값이 앱 정보에 등록된 값과 다를 때 주로 발생합니다. 등록된 값과 요청 파라미터 값이 완전히 일치하는지 확인해야 합니다.
03 인증코드로 토큰 요청
인증 코드를 받은 뒤에는 토큰 요청 API를 호출해야 합니다. 토큰 요청까지 완료되어야만 이후 사용자 정보를 요청할 수 있습니다. 또한 비바톤 계정 세션의 인증 시간은 기본 24시간이며, 최초 인증 후 세션 시간은 변경되지 않습니다.
POST /oauth/token
// API신청시의 Redirect uri : http://{REDIRECT_URI}?code={CODE}
const url = "https://bauth.bbaton.com/oauth/token";
const client_id = "API신청후 받은 client id 값";
const secret_key = "API신청후 받은 secret key 값";
const redirect_uri = "API신청시의 Redirect uri 값";
const auth = "Basic " + Buffer.from(client_id + ":" + secret_key).toString("base64");
// grant_type: authorization_code
// redirect_uri: redirect_uri
// code: CODE
// Authorization: auth
04 토큰으로 사용자 정보 요청
토큰 발급이 완료되면 /v2/user/me 로 사용자 정보를 요청할 수 있습니다. 이 단계에서 Authorization: {token_type} {access_token} 형태의 헤더를 사용합니다. 각 언어 구현에서는 이 값을 조합해 요청을 구성합니다.
GET /v2/user/me
// 3번에서 받은 token_type, access_token const url = "https://bapi.bbaton.com/v2/user/me"; const auth = response.data.token_type + " " + response.data.access_token; // Header // Authorization: auth