네이버 API 등록을 위한 Callback 주소 만들기 (API연동 1단계)

(Flask + ngrok 환경 / 개인용 PC / VSCode 실행 기준)


1. 사전 준비

  • Python 3.10 이상 설치
  • Flask 설치: pip install flask
  • ngrok 설치 및 회원가입 https://ngrok.com/download
  • ngrok 설치 경로 예시: C:\\python_project\\ngrok-v3-stable-windows-amd64

2. 네이버 개발자센터에서 애플리케이션 등록

필수 항목 설정 항목 내용 예시
앱 이름 my-naver-test-app
사용 API 네이버 로그인
서비스 URL 나중에 ngrok 주소로 대체 예정
Callback URL 예: https://xxxx.ngrok-free.app/naver/callback

3. Flask 콜백 서버 코드 작성 (naver_callback.py)

import os
import json
import requests
from flask import Flask, request, redirect
from dotenv import load_dotenv

# .env 파일 불러오기
load_dotenv()

app = Flask(__name__)

NAVER_CLIENT_ID = os.getenv("NAVER_CLIENT_ID")
NAVER_CLIENT_SECRET = os.getenv("NAVER_CLIENT_SECRET")
CALLBACK_URL = os.getenv("CALLBACK_URL")

@app.route("/")
def index():
    return "NAVER API 연동 준비 완료!"

@app.route("/login")
def login():
    state = "random_state_string"  # CSRF 방지용 임의 문자열
    login_url = (
        f"https://nid.naver.com/oauth2.0/authorize?"
        f"response_type=code&client_id={NAVER_CLIENT_ID}&"
        f"redirect_uri={CALLBACK_URL}&state={state}"
    )
    return redirect(login_url)

@app.route("/callback")
def callback():
    code = request.args.get("code")
    state = request.args.get("state")

    # 네이버 서버에 access_token 요청
    token_url = "https://nid.naver.com/oauth2.0/token"
    params = {
        "grant_type": "authorization_code",
        "client_id": NAVER_CLIENT_ID,
        "client_secret": NAVER_CLIENT_SECRET,
        "code": code,
        "state": state
    }

    response = requests.get(token_url, params=params)
    token_data = response.json()

    # access_token과 refresh_token 추출
    access_token = token_data.get("access_token")
    refresh_token = token_data.get("refresh_token")

    # token.json 파일로 저장
    with open("token.json", "w") as f:
        json.dump({
            "access_token": access_token,
            "refresh_token": refresh_token
        }, f)

    return "토큰이 token.json에 저장되었습니다."

if __name__ == "__main__":
    app.run(port=5000, debug=True)

VSCode에서 실행:

python naver_callback.py

4. ngrok 인증 토큰 등록 (최초 1회만)

CMD에서 아래 명령 실행:

ngrok config add-authtoken <당신의_토큰>

 

https://dashboard.ngrok.com/get-started/setup/windows 에서 토큰 확인 가능 > 왼쪽 사이드바 위쪽에서 Your Authtoken


5. ngrok 수동 실행으로 콜백 주소 확보

  1. ngrok.exe가 있는 폴더로 이동 (예: C:\\python_project\\ngrok-v3-stable-windows-amd64)
  2. 해당 폴더 경로주소창에서 경로 지우고,cmd 입력 후 프롬프트를 열어요. 또는 아래와 같은 방법도 있어요.     

    *명령 프롬프트 실행 방법: 윈도우키+R > cmd > 경로이동 [ cd C:\\python_project\\ngrok-v3-stable-windows-amd64] 

  1. 경로를 확인한 후 아래와 같은 명령 실행:
ngrok http 8000
  1. 출력된 주소 확인:
Forwarding  <https://6618-118-32-218-14.ngrok-free.app> ->
  1. 콜백 주소 구성:
<https://6618-118-32-218-14.ngrok-free.app/naver/callback>

6. 네이버 개발자센터에 콜백 주소 등록

경로: 네이버개발자센터 > Application > 애플리케이션 등록 (API 이용신청)

  • Callback URL에 위 주소 등록
  • /naver/callback 경로를 꼭 포함해야 함

7. 테스트 완료 확인

  1. 브라우저에서 콜백 주소 접속 시도
<https://xxxx.ngrok-free.app/naver/callback?code=testcode&state=teststate>
  1. VSCode 터미널에 출력:
[성공] 인증 코드: testcode, 상태: teststate
블로그 주인장

신입 마케터 성장일기

스티커 버튼 Top으로 이동