logIn method

Future<CanPassAccount?> logIn(
  1. BuildContext context
)

return the canpass account object

final account = await FlutterCanPassLogin.getInstance().logIn(context);

Implementation

Future<CanPassAccount?> logIn(BuildContext context) async {
  try {
    var grant = oauth2.AuthorizationCodeGrant(
        _identifier!,
        Uri.parse(Constants.authorizationEndPoint),
        Uri.parse(Constants.tokenEndPoint),
        secret: _secret);
    var authorizationUrl = grant.getAuthorizationUrl(
        Uri.parse(Constants.redirectUrl),
        scopes: ['email']);
    var authorizedUrl = await (Utils.getInstance()
        .getAuthorizedUri(authorizationUrl, context));
    if(authorizedUrl== null) return null;
    final _client = await grant
        .handleAuthorizationResponse(authorizedUrl.queryParameters);
    _accessToken = _client.credentials.accessToken;
    Utils.getInstance().saveAccessTokenToCache(_accessToken);
    return getCurrentAccount(_accessToken);
  } catch (e, s) {
    print("logIn() fail $e $s");
    return null;
  }
}