certLoginWithKakaoTalk method
- {required String signData,
- List<
Prompt> ? prompts, - List<
String> ? channelPublicIds, - List<
String> ? serviceTerms, - String? nonce,
- 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;
}