본문 바로가기
텔레그램 한글 가이드
채널·봇 STEP 79 / 98

텔레그램 API 사용자 로그인 흐름 — 코드부터 2단계 인증까지

텔레그램 API 로 사람 계정에 로그인하는 순서를 정리했습니다. auth.sendCode 로 코드 요청, 앱·문자·전화·이메일 등 코드가 오는 길과 안내, auth.signIn·signUp, 2단계 인증의 SRP 확인, 개발 중 시험 서버 번호와 로그인 뒤 처리를 안내합니다.

  • 난이도L4
  • 읽는 시간5분
  • 최종 검증

결론부터

  1. 1sendCode → signIn(새 번호면 signUp) → 2단계 인증이면 SRP.
  2. 2코드가 오는 길은 서버가 정한다 — 종류에 맞는 안내를 띄운다.
  3. 3개발 중엔 시험 서버와 시험 번호로 — 진짜 번호 요청을 아낀다.
이 글의 목차
  1. 로그인은 세 걸음 + 한 걸음
  2. 코드는 여러 길로 온다
  3. 2단계 인증 — 비밀번호를 보내지 않는다
  4. 로그인 뒤
  5. 자주 묻는 질문
  6. 한눈에 정리

로그인은 세 걸음 + 한 걸음

텔레그램 API(사람 계정)의 로그인은 공식 앱이 하는 일과 같습니다. TDLib 을 쓰면 이 순서를 라이브러리가 상태(authorization state)로 알려 주고, 직접 MTProto 를 다루면 아래 메서드를 차례로 부릅니다.

걸음메서드하는 일
1. 코드 요청auth.sendCode전화번호와 api_id·api_hash 를 보낸다. 서버는 코드를 보낸 방법과 phone_code_hash 를 돌려준다
2. 코드 입력auth.signIn받은 코드와 phone_code_hash 로 로그인한다
2-1. 새 번호면auth.signUp가입이 필요하다는 답이 오면 이름을 받아 가입한다(이용 약관 동의 포함)
3. 2단계 인증account.getPassword → auth.checkPasswordSESSION_PASSWORD_NEEDED 가 오면 비밀번호를 SRP 방식으로 확인한다

api_id·api_hash 받는 법은 api_id 발급, 갈래 고르기는 API 4가지에 있습니다.

코드는 여러 길로 온다

코드를 어디로 보낼지는 서버가 정하고, 응답의 종류로 알려 줍니다. 화면에는 그 종류에 맞는 안내를 띄워야 사용자가 헤매지 않습니다.

종류사용자에게 할 안내
앱이미 로그인된 다른 기기의 텔레그램 공식 알림을 보라
문자 · 전화문자 메시지나 자동 음성 전화를 기다리라
짧은 전화(플래시·부재중)걸려 온 번호(끝자리)가 코드다
이메일로그인 이메일로 온 코드를 보라
프래그먼트익명 번호(+888)는 fragment.com 에서 코드를 본다
  • 다른 방법으로 다시 받기는 auth.resendCode, 그만두기는 auth.cancelCode 입니다. 서버가 다음 방법과 기다릴 시간을 알려 주면 그 시간 전에는 다시 요청하지 않습니다.
  • 사용자가 코드를 남에게 전달한 흔적이 있으면 그 코드를 무효로 하는 장치(account.invalidateSignInCodes)도 있습니다. 로그인 코드는 누구에게도 보여 주지 않게 안내합니다.

2단계 인증 — 비밀번호를 보내지 않는다

2단계 인증이 켜진 계정은 코드 다음에 클라우드 비밀번호를 묻습니다. 이때 비밀번호 자체를 서버로 보내지 않습니다. account.getPassword 로 받은 값(소금·매개변수)으로 비밀번호를 증명하는 값을 계산해 auth.checkPassword 에 보내는 SRP 방식입니다. 계산 과정이 길고 틀리기 쉬워, 직접 구현보다 TDLib 같은 라이브러리를 권합니다(TDLib 이란).

로그인 뒤

  • 로그인한 세션은 사용자의 '기기' 목록에 내 앱 이름으로 나타납니다. 사용자가 거기서 끊을 수 있다는 점을 화면에 알려 줍니다.
  • 세션이 끊기면 다음 요청에서 401 오류(AUTH_KEY_UNREGISTERED·SESSION_REVOKED 등)가 오니, 로그인 화면으로 돌려보냅니다(오류 읽기).
  • 로그아웃은 auth.logOut — 기기에 남은 세션 파일도 지웁니다.

자주 묻는 질문

텔레그램 API 로그인은 어떤 순서인가요?

auth.sendCode 로 코드를 요청하고 auth.signIn 으로 코드를 확인합니다. 새 번호면 auth.signUp, 2단계 인증이 켜져 있으면 SRP 로 비밀번호를 확인합니다.

SESSION_PASSWORD_NEEDED 가 나와요.

2단계 인증이 켜진 계정입니다. account.getPassword 로 값을 받아 auth.checkPassword 로 비밀번호를 SRP 방식으로 확인합니다.

로그인 코드가 문자로 안 와요.

서버가 이미 로그인된 기기의 텔레그램 앱으로 보냈을 수 있습니다. sentCode 종류를 보고 안내합니다.

개발할 때 진짜 번호를 계속 써야 하나요?

시험 서버와 공식 문서가 안내하는 시험용 번호를 쓰면 진짜 번호로 코드를 계속 받지 않아도 됩니다.

참고한 공식 문서

요약

한눈에 정리

  1. 1순서

    sendCode · signIn · 2FA.

  2. 2코드

    앱 · 문자 · 전화 · 이메일.

  3. 3시험

    test DC · 시험 번호.

이 글 공유하기

같은 문제를 겪는 친구에게 보내 주세요.

텔레그램
더보기

휴대폰으로 열기휴대폰 카메라로 비추면 이 글이 열려요.

최종 수정 2026-10-06

함께 보면 좋은 글

전체 보기 ›