in lib/src/authorization_code_grant.dart [293:327]
Future<Client> _handleAuthorizationCode(String? authorizationCode) async {
var startTime = DateTime.now();
var headers = <String, String>{};
var body = {
'grant_type': 'authorization_code',
'code': authorizationCode,
'redirect_uri': _redirectEndpoint.toString(),
'code_verifier': _codeVerifier
};
var secret = this.secret;
if (_basicAuth && secret != null) {
headers['Authorization'] = basicAuthHeader(identifier, secret);
} else {
// The ID is required for this request any time basic auth isn't being
// used, even if there's no actual client authentication to be done.
body['client_id'] = identifier;
if (secret != null) body['client_secret'] = secret;
}
var response =
await _httpClient!.post(tokenEndpoint, headers: headers, body: body);
var credentials = handleAccessTokenResponse(
response, tokenEndpoint, startTime, _scopes, _delimiter,
getParameters: _getParameters);
return Client(credentials,
identifier: identifier,
secret: secret,
basicAuth: _basicAuth,
httpClient: _httpClient,
onCredentialsRefreshed: _onCredentialsRefreshed);
}