certLoginWithKakaoAccount method
- {required String signData,
- List<
Prompt> ? prompts, - List<
String> ? channelPublicIds, - List<
String> ? serviceTerms, - String? loginHint,
- String? nonce,
- String? settleId}
채널 메시지 방식 카카오톡 인증 로그인
기본 브라우저의 카카오계정 쿠키(cookie)로 사용자 인증 후, 카카오계정에 연결된 카카오톡으로 카카오톡 인증 로그인을 요청하는 채널 메시지 발송
카카오톡의 채널 메시지를 통해 동의 및 전자서명을 거쳐 CertTokenInfo
반환
동의 화면 요청 시 추가 상호작용을 요청하고자 할 때는 prompts
전달, 사용할 수 있는 옵션의 종류는 Prompt 참고
카카오계정 로그인 페이지의 ID에 자동 입력할 이메일 또는 전화번호(+82 00-0000-0000 형식)는 loginHint
에 전달
ID 토큰 재생 공격 방지를 위한 검증 값은 nonce
로 전달. 임의의 문자열, ID 토큰 검증 시 사용
전자서명 원문은 signData
로 전달
정산 ID는 settleId
로 전달
Implementation
Future<CertTokenInfo> certLoginWithKakaoAccount({
required String signData,
List<Prompt>? prompts,
List<String>? channelPublicIds,
List<String>? serviceTerms,
String? loginHint,
String? nonce,
String? settleId,
}) async {
var kauthTxId = await AuthApi.instance.prepare(
certType: CertType.k2100,
settleId: settleId,
);
var codeVerifier = AuthCodeClient.codeVerifier();
final authCode = await AuthCodeClient.instance.authorize(
redirectUri: KakaoSdk.redirectUri,
prompts: prompts,
channelPublicIds: channelPublicIds,
serviceTerms: serviceTerms,
codeVerifier: codeVerifier,
loginHint: loginHint,
nonce: nonce,
kauthTxId: kauthTxId,
webPopupLogin: true,
);
final certTokenInfo = await AuthApi.instance.issueAccessTokenWithCert(
authCode: authCode, codeVerifier: codeVerifier);
await TokenManagerProvider.instance.manager.setToken(certTokenInfo.token);
return certTokenInfo;
}