authorize method

  1. @override
Future<void> authorize({
  1. String? tokenResponseString,
})
override

Initiates the authorization process.

Discovers the OpenID Connect issuer configuration, creates a client, and launches the authorization process using the specified URL launcher.

Throws an error if the authorization URL cannot be launched.

Implementation

@override
Future<void> authorize({
  String? tokenResponseString,
}) async {
  final issuer = await Issuer.discover(Uri.parse('$_issuerUrl/v2.0'));
  final client = Client(issuer, _clientId);

  if (tokenResponseString == null) {
    urlLauncher(String urlString) async {
      var url = '$urlString$_query';
      var uri = Uri.parse(url);
      if (await url_launcher.canLaunchUrl(uri) || Platform.isAndroid) {
        await url_launcher.launchUrl(uri, mode: _launchMode);
      } else {
        throw 'Could not launch $url';
      }
    }

    Authenticator authenticator = Authenticator(
      client,
      scopes: _scopes,
      port: _port,
      urlLancher: urlLauncher,
    );

    credential = await authenticator.authorize();
  } else {
    credential = fromTokenResponseString(client, tokenResponseString);
  }
}