signIn method

Future<UserSession> signIn({
  1. required String clientID,
  2. required DioClient microsoftDioClient,
  3. required AuthEndpointsData authEndpointsData,
  4. bool useExternalBrowserOnAndroid = true,
  5. Duration timeout = const Duration(seconds: 15),
  6. Options? getUserDetailsOptions,
})

Implementation

Future<UserSession> signIn({
  required String clientID,
  required DioClient microsoftDioClient,
  required AuthEndpointsData authEndpointsData,
  bool useExternalBrowserOnAndroid = true,
  Duration timeout = const Duration(seconds: 15),
  Options? getUserDetailsOptions,
}) async {
  AuthorizationTokenResponse? response;
  // Double check that on login the user data is cleaned out
  await SecuredStorage().deleteAuthSessionTokensAndCredentials();

  if (!kIsWeb && useExternalBrowserOnAndroid && Platform.isAndroid) {
    response = await getTokensFromExternalBrowser(
      clientID: clientID,
      authEndpointsData: authEndpointsData,
      timeout: timeout,
    );
  }

  return await authenticate(
    tokenResponse: response,
    clientID: clientID,
    microsoftDioClient: microsoftDioClient,
    authEndpointsData: authEndpointsData,
    getUserDetailsOptions: getUserDetailsOptions,
  );
}