본문으로 이동
주 메뉴
주 메뉴
사이드바로 이동
숨기기
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
학교의 모든 지식. SMwiki
검색
검색
보이기
로그인
개인 도구
로그인
로그아웃한 편집자를 위한 문서
더 알아보기
기여
토론
플러터:인증(OAuth2)
편집하기
문서
토론
한국어
읽기
편집
원본 편집
역사 보기
도구
도구
사이드바로 이동
숨기기
동작
읽기
편집
원본 편집
역사 보기
일반
여기를 가리키는 문서
가리키는 글의 최근 바뀜
파일 올리기
문서 정보
보이기
사이드바로 이동
숨기기
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
{{플러터}} = [아직 미완의 문서입니다.] = = 개요 = * Firebase는 Google/Apple/GitHub 등 주요 소셜 로그인만 공식 지원함. * 이 문서에선 일반적인 표준 OAuth2 규격을 100% 준수(Authorization Code + PKCE)하는 경우의 로그인을 구현함.(flutter_appauth 사용) * Django(OAuth2 Provider)·Auth0·Keycloak 등 OAuth2 표준을 준수하는 서버라면 모두 동일한 방식으로 연동 가능함. === 비고 === * 네이버, 카카오, 디스코드 등의 인증은 OAuth2와 유사하지만 표준을 완전히 따르지 않기 때문에 직접 구현해야 하는데, 네이버, 카카오는 일반 OAuth2의 규격과 조금 다름. 아래 패키지를 이용하면 앱투앱 로그인도 간편하게 이루어짐. * 카카오: <code>kakao_flutter_sdk</code> (공식) * 네이버: <code>flutter_naver_login</code> * 디스코드: <code>discord_oauth2</code> = 사전 준비 = == 필수 개념 == * Authorization Code Flow with PKCE * Authorization Endpoint: <code>/authorize</code> * Token Endpoint: <code>/token</code> * Client ID / Redirect URI {| class="wikitable" |+ !할 일 !설명 !비고 |- |<code>pubspec.yaml</code>에 패키지 추가 | |<syntaxhighlight lang="yaml"> dependencies: flutter_appauth: ^5.0.0 </syntaxhighlight> |- |Redirect URI 등록 |[스킴 지정하는 법에 대해선 따로 찾아보아야 할듯.] |Flutter 앱은 보통 스킴 기반 URI를 사용함. |- | | |} = Flutter 코드 (최소 구현 예제) = == 인증 요청 == <syntaxhighlight lang="dart"> import 'package:flutter_appauth/flutter_appauth.dart'; final appAuth = FlutterAppAuth(); Future<void> login() async { final result = await appAuth.authorizeAndExchangeCode( AuthorizationTokenRequest( "your_client_id", "com.example.app:/oauth", serviceConfiguration: AuthorizationServiceConfiguration( authorizationEndpoint: "https://your-server.com/o/authorize/", tokenEndpoint: "https://your-server.com/o/token/", ), scopes: ['openid', 'profile', 'email'], ), ); print("Access Token: ${result?.accessToken}"); } </syntaxhighlight> == 토큰 갱신 == <syntaxhighlight lang="dart"> final refreshed = await appAuth.token( TokenRequest( "your_client_id", "com.example.app:/oauth", refreshToken: result.refreshToken, serviceConfiguration: AuthorizationServiceConfiguration( authorizationEndpoint: "https://your-server.com/o/authorize/", tokenEndpoint: "https://your-server.com/o/token/", ), ), ); </syntaxhighlight> = OAuth 제공자 설정 = == Django OAuth2 서버 연동 == === Django-OAuth-Toolkit 설정 === <syntaxhighlight lang="python"> OAUTH2_PROVIDER = { "ACCESS_TOKEN_EXPIRE_SECONDS": 3600, "PKCE_REQUIRED": True, } </syntaxhighlight> === Application 등록 === * Client type: Public * Authorization grant type: Authorization code * Redirect URIs: <code>com.example.app:/oauth</code> ---- === 최소 동작 구조 요약 === # OAuth2 서버에서 Client 등록 (Redirect URI 포함) # Flutter에서 <code>flutter_appauth</code>를 이용해 로그인 # OAuth 서버가 Authorization Code 발급 # Flutter가 Authorization Code → Access Token 교환 # 필요 시 Refresh Token으로 갱신
요약:
학교의 모든 지식. SMwiki에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
학교의 모든 지식. SMwiki:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
이 문서에 포함된 문서:
틀:플러터
(
편집
)
검색
검색
플러터:인증(OAuth2)
편집하기
새 주제