Dart
Dart
hacienda.go.cr Refrescar un Token
See more hacienda.go.cr Examples
Refreshes an access token for the Recepción de Comprobantes Electrónicos del Ministerio de Hacienda (Costa Rica)Chilkat Dart Downloads
import 'package:chilkat/chilkat.dart';
void main() {
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// It is assumed we previously obtained an OAuth2 access token.
// This example loads the JSON access token file
// saved by this example: Get hacienda.co.cr OAuth2 Access Token
final jsonToken = CkJsonObject();
try {
jsonToken.loadFile('qa_data/tokens/hacienda_cr.json');
} on ChilkatException {
print('Failed to load constantContact.json');
return;
}
// The access token JSON looks like this:
// {
// "access_token": "ey....",
// "expires_in": 300,
// "id_token": "ey....",
// "not-before-policy": 0,
// "refresh_expires_in": 1800,
// "refresh_token": "ey...",
// "session_state": "...",
// "token_type": "bearer"
// }
final http = CkHttp();
// Implements the following CURL command:
// curl -X "POST" "https://idp.comprobanteselectronicos.go.cr/auth/realms/rut-stag/protocol/openid-connect/token" \
// -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" \
// --data-urlencode "client_id=api-stag" \
// --data-urlencode "refresh_token=ey..." \
// --data-urlencode "grant_type=refresh_token"
// Use the following online tool to generate HTTP code from a CURL command
// Convert a cURL Command to HTTP Source Code
final req = CkHttpRequest();
req.httpVerb = 'POST';
req.path = '/auth/realms/rut-stag/protocol/openid-connect/token';
req.contentType = 'application/x-www-form-urlencoded';
req.addParam('client_id', 'api-stag');
req.addParam('refresh_token', jsonToken.stringOf('refresh_token'));
req.addParam('grant_type', 'refresh_token');
final resp = CkHttpResponse();
try {
http.httpReq('https://idp.comprobanteselectronicos.go.cr/auth/realms/rut-stag/protocol/openid-connect/token', req, resp);
} on ChilkatException catch (e) {
print(e.lastErrorText);
return;
}
final sbResponseBody = CkStringBuilder();
resp.getBodySb(sbResponseBody);
final jResp = CkJsonObject();
jResp.loadSb(sbResponseBody);
jResp.emitCompact = false;
print('Response Body:');
print(jResp.emit());
final respStatusCode = resp.statusCode;
print('Response Status Code = $respStatusCode');
if (respStatusCode >= 400) {
print('Response Header:');
print(resp.header);
print('Failed.');
return;
}
// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)
// {
// "access_token": "ey....",
// "expires_in": 300,
// "id_token": "ey....",
// "not-before-policy": 0,
// "refresh_expires_in": 1800,
// "refresh_token": "ey...",
// "session_state": "...",
// "token_type": "bearer"
// }
// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON
final accessToken = jResp.stringOf('access_token');
final expiresIn = jResp.intOf('expires_in');
final idToken = jResp.stringOf('id_token');
final notBeforePolicy = jResp.intOf('not-before-policy');
final refreshExpiresIn = jResp.intOf('refresh_expires_in');
final refreshToken = jResp.stringOf('refresh_token');
final sessionState = jResp.stringOf('session_state');
final tokenType = jResp.stringOf('token_type');
// Save the new JSON access token response to a file.
jResp.writeFile('qa_data/tokens/haciendda_cr.json');
}