login method

Future<String?> login(
  1. String clientId,
  2. String clientSecret
)

Implementation

Future<String?> login(String clientId, String clientSecret) async {
  var state = Preferences.prefs?.getString("OAuth_State");
  var codeVerifier = Preferences.prefs?.getString("OAuth_CodeVerifier");

  if (kIsWeb && codeVerifier == null) {
    codeVerifier = randomAlphaNumeric(80);
    Preferences.prefs?.setString("OAuth_CodeVerifier", codeVerifier);
  }

  AccessTokenResponse tknResponse = await client.getTokenWithAuthCodeFlow(
    clientId: clientId,
    clientSecret: Uri.encodeQueryComponent(clientSecret),
    scopes: ["offline_access"],
    webAuthClient: baseWebAuth,
    state: state,
    codeVerifier: codeVerifier,
  );

  var refreshToken = tknResponse.refreshToken;
  if (refreshToken != null) {
    Preferences.prefs?.setString("RefreshToken", refreshToken);
  }

  Preferences.prefs?.setString("AccessToken", tknResponse.accessToken!);

  return tknResponse.accessToken;
}