refreshToken static method

Future<FitbitCredentials> refreshToken({
  1. required String clientID,
  2. required String clientSecret,
  3. required FitbitCredentials fitbitCredentials,
})

Method that refreshes the Fitbit access token and returns the new, refreshed FitbitCredentials.

Implementation

static Future<FitbitCredentials> refreshToken(
    {required String clientID,
    required String clientSecret,
    required FitbitCredentials fitbitCredentials}) async {
  // Instantiate Dio and its Response
  Dio dio = Dio();
  Response response;

  // Generate the fitbit url
  final fitbitUrl = FitbitAuthAPIURL.refreshToken(
      clientID: clientID,
      clientSecret: clientSecret,
      fitbitCredentials: fitbitCredentials);

  // Post refresh query to Fitbit API
  response = await dio.post(
    fitbitUrl.url,
    data: fitbitUrl.data,
    options: Options(
      contentType: Headers.formUrlEncodedContentType,
      headers: {
        'Authorization': fitbitUrl.authorizationHeader,
      },
    ),
  );

  // Debugging
  final logger = Logger();
  logger.i('$response');

  // Overwrite the fitbit credentials and return them
  final accessToken = response.data['access_token'] as String;
  final refreshToken = response.data['refresh_token'] as String;
  return fitbitCredentials.copyWith(
      fitbitAccessToken: accessToken, fitbitRefreshToken: refreshToken);
}