# loginWithKakaoAccount method Null safety

Future<OAuthToken> loginWithKakaoAccount(

1. {List<Prompt>? prompts,
2. List<String>? channelPublicIds,
3. List<String>? serviceTerms,
4. String? loginHint,
5. String? nonce}

)

카카오계정으로 로그인. 기본 웹 브라우저에 있는 카카오계정 cookie 로 사용자를 인증하고 `OAuthToken` 발급

발급된 토큰은 TokenManagerProvider에 지정된 토큰 저장소에 자동으로 저장됨

동의 화면 요청 시 추가 상호작용을 요청하고자 할 때는 `prompts`를 전달 카카오계정 로그인 페이지의 ID에 자동 입력할 이메일 또는 전화번호(+82 00-0000-0000 형식)는 `loginHint`에 전달 ID 토큰 재생 공격 방지를 위한 검증 값은 `nonce`로 전달. 임의의 문자열, ID 토큰 검증 시 사용

## Implementation

    Future<OAuthToken> loginWithKakaoAccount({
      List<Prompt>? prompts,
      List<String>? channelPublicIds,
      List<String>? serviceTerms,
      String? loginHint,
      String? nonce,
    }) async {
      String codeVerifier = AuthCodeClient.codeVerifier();
      final authCode = await AuthCodeClient.instance.authorize(
        prompts: prompts,
        channelPublicIds: channelPublicIds,
        serviceTerms: serviceTerms,
        codeVerifier: codeVerifier,
        loginHint: loginHint,
        nonce: nonce,
        webPopupLogin: true,
      );
      final token = await AuthApi.instance
          .issueAccessToken(authCode: authCode, codeVerifier: codeVerifier);
      await TokenManagerProvider.instance.manager.setToken(token);
      return token;
    }