loginWithKakaoTalk method

Future<OAuthToken> loginWithKakaoTalk(
  1. {List<String>? channelPublicIds,
  2. List<String>? serviceTerms,
  3. String? nonce}
)

카카오톡으로 로그인 카카오톡에 연결된 카카오계정으로 사용자를 인증하고 OAuthToken 발급 발급된 토큰은 TokenManagerProvider에 지정된 토큰 저장소에 자동으로 저장됨 ID 토큰 재생 공격 방지를 위한 검증 값은 nonce로 전달. 임의의 문자열, ID 토큰 검증 시 사용

Implementation

Future<OAuthToken> loginWithKakaoTalk({
  List<String>? channelPublicIds,
  List<String>? serviceTerms,
  String? nonce,
}) async {
  var codeVerifier = AuthCodeClient.codeVerifier();

  String? stateToken;
  String? redirectUrl;
  if (kIsWeb) {
    stateToken = generateRandomString(20);
    redirectUrl = await AuthCodeClient.instance.platformRedirectUri();
  }

  final authCode = await AuthCodeClient.instance.authorizeWithTalk(
    redirectUri: redirectUrl ?? KakaoSdk.redirectUri,
    channelPublicId: channelPublicIds,
    serviceTerms: serviceTerms,
    codeVerifier: codeVerifier,
    nonce: nonce,
    stateToken: stateToken,
    webPopupLogin: true,
  );

  final token = await AuthApi.instance.issueAccessToken(
      redirectUri: redirectUrl,
      authCode: authCode,
      codeVerifier: codeVerifier);
  await TokenManagerProvider.instance.manager.setToken(token);
  return token;
}