certLoginWithKakaoTalk method

Future<CertTokenInfo> certLoginWithKakaoTalk(
  1. {required String signData,
  2. List<Prompt>? prompts,
  3. List<String>? channelPublicIds,
  4. List<String>? serviceTerms,
  5. String? nonce,
  6. String? settleId}
)

앱투앱(App-to-App) 방식 카카오톡 인증 로그인

카카오톡을 실행하고, 카카오톡에 연결된 카카오계정으로 사용자 인증 후 동의 및 전자서명을 거쳐 CertTokenInfo 반환

동의 화면 요청 시 추가 상호작용을 요청하고자 할 때는 prompts 전달, 사용할 수 있는 옵션의 종류는 Prompt 참고 ID 토큰 재생 공격 방지를 위한 검증 값은 nonce 전달. 임의의 문자열, ID 토큰 검증 시 사용 전자서명 원문은 signData로 전달 정산 ID는 settleId로 전달

Implementation

Future<CertTokenInfo> certLoginWithKakaoTalk({
  required String signData,
  List<Prompt>? prompts,
  List<String>? channelPublicIds,
  List<String>? serviceTerms,
  String? nonce,
  String? settleId,
}) async {
  var kauthTxId = await AuthApi.instance.prepare(
    certType: CertType.k2100,
    settleId: settleId,
  );
  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,
    prompts: prompts,
    channelPublicId: channelPublicIds,
    serviceTerms: serviceTerms,
    codeVerifier: codeVerifier,
    nonce: nonce,
    kauthTxId: kauthTxId,
    stateToken: stateToken,
    webPopupLogin: true,
  );
  final certTokenInfo = await AuthApi.instance.issueAccessTokenWithCert(
      authCode: authCode, codeVerifier: codeVerifier);
  await TokenManagerProvider.instance.manager.setToken(certTokenInfo.token);
  return certTokenInfo;
}