# loginWithKakaoTalk method Null safety

Future<OAuthToken> loginWithKakaoTalk(

1. {String? redirectUri,
2. List<String>? channelPublicIds,
3. List<String>? serviceTerms,
4. String? nonce}

)

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

## Implementation

    Future<OAuthToken> loginWithKakaoTalk({
      String? redirectUri,
      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,
        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;
    }