getAuthToken method

Future<TokenResponse> getAuthToken({
  1. required String code,
  2. required String redirectUrl,
})

Obtains the access token from the authorization code.

Implementation

Future<TokenResponse> getAuthToken({required String code, required String redirectUrl}) async {

  var credentials = "$clientId:$clientSecret";
  Codec<String, String> stringToBase64Url = utf8.fuse(base64Url);
  String encoded = stringToBase64Url.encode(credentials);

  Map<String, String> headers = {
    "Authorization": "Basic " + encoded,
    'Accept': 'application/json',
    'Content-Type': 'application/x-www-form-urlencoded',
  };

  Map<String, String> body = {
    "code": code,
    "client_id": clientId,
    "client_secret": clientSecret,
    "redirect_uri": redirectUrl,
    "grant_type": "authorization_code"
  };

  Uri tokenUri = Uri.parse(tokenEndpoint);

  //print("tokenUri $tokenUri}");
  final response = await http.post(tokenUri, body: body,
      headers:  headers);

  if(response.statusCode == 200) {
    //print (response.body);
    _lastTokenResponse = TokenResponse.fromJson(jsonDecode(response.body));
    return _lastTokenResponse!;
  }
  else {
    //print(response.body);
    throw TokenRequestFailedException(response.statusCode, response.body);
  }
}