loginWithKakaoAccount method

Future<OAuthToken> loginWithKakaoAccount(
  1. {List<Prompt>? prompts,
  2. List<String>? channelPublicIds,
  3. List<String>? serviceTerms,
  4. String? loginHint,
  5. String? nonce}
)

KO: 카카오계정으로 로그인
prompts에 상호작용 추가 요청 프롬프트 전달
channelPublicIds에 카카오톡 채널 프로필 ID 전달
serviceTerms 서비스 약관 목록 전달
loginHint에 카카오계정 로그인 페이지의 ID란에 자동 입력할 값 전달
ID 토큰 재생 공격 방지를 위한 검증 값, 임의의 문자열은 nonce에 전달

EN: Login with Kakao Account
Pass the prompts to prompts for requests to add interactions
Pass List of Kakao Talk Channel IDs to channelPublicIds
Pass list of service terms to serviceTerms
Pass a value to fill in the ID field of the Kakao Account login page to loginHint
Pass a random string to prevent replay attacks to nonce

Implementation

Future<OAuthToken> loginWithKakaoAccount({
  List<Prompt>? prompts,
  List<String>? channelPublicIds,
  List<String>? serviceTerms,
  String? loginHint,
  String? nonce,
}) async {
  final codeVerifier = AuthCodeClient.codeVerifier();
  final redirectUri = kIsWeb
      ? CommonConstants.webAccountLoginRedirectUri
      : KakaoSdk.redirectUri;

  final authCode = await AuthCodeClient.instance.authorize(
    redirectUri: redirectUri,
    prompts: prompts,
    channelPublicIds: channelPublicIds,
    serviceTerms: serviceTerms,
    codeVerifier: codeVerifier,
    loginHint: loginHint,
    nonce: nonce,
    webPopupLogin: true,
  );
  final token = await AuthApi.instance.issueAccessToken(
    authCode: authCode,
    codeVerifier: codeVerifier,
    redirectUri: redirectUri,
  );
  await TokenManagerProvider.instance.manager.setToken(token);
  return token;
}