login abstract method
Open a login panel, perform the authentication, and receive
a token.
Should return null if the process was manually cancelled,
or throw an AuthException if it failed.
Implementation
Future<AuthToken?> login(BuildContext context);