The existing GIDSignIn implementation handles the both interactive and non-interactive authentication flow in a same method, which increase the code complexity. This refactor work will handle the interactive and non-interactive flow seperately. The component GIDUserAuthFlowController will handle the interactive user signin flow.