Access Token
Un Access Token (token de acceso) es el mecanismo que se utiliza en Khipu para permitir que los propietarios de la información otorguen su consentimiento para acceder a sus datos.
Para las APIs de OpenData de Khipu, existen dos casos de uso principales:
Quieres interactuar con nuestras APIs en nombre tuyo o de tu organización. Por ejemplo, para obtener los estados de cuenta bancarios de tu propia empresa desde uno de tus bancos.
Quieres interactuar con nuestras APIs en nombre de tus usuarios. Por ejemplo, deseas usar nuestras APIs en el proceso de incorporación (onboarding) de tu aplicación.
Descripción general
Es un flujo de tres pasos que puede resumirse de la siguiente manera:
- Usa el endpoint
/link/token/create
para obtener unLinkToken
. - Lanza un widget khipu utilizando
LinkToken
para permitir que los usuarios generen unPublicToken
temporal. - Usa el endpoint
/public/token/exchange
para intercambiar elPublicToken
por unAccessToken
de larga duración
Guía paso a paso
Vamos a profundizar en los detalles de cada paso.
Paso uno: Obtener un LinkToken
Para obtener un LinkToken
, deberás llamar al endpoint /link/token/create
para alguna de las instituciones disponibles.
Ejemplo de Request
POST https://api.khipu.com/link/token/create
Content-Type: application/json
x-api-key: <A VALID API-KEY>
{
"InstitutionId": "<VALID INSTITUTION ID>"
}
Ejemplo de Respuesta
{
"OperationId": "<A large string>",
"Status": "OK",
"Data": {
"LinkToken": "<A very large string>"
},
"AdditionalInformation": null,
"Error": null,
"LifeSpan": null
}
Acá presentamos una lista de las instituciones actualmente disponibles:
- Chile
- Banca
- Business
- Banco BICE:
cl_banking_business_bancobice
- Banco de Chile:
cl_banking_business_banconexion
- BancoEstado:
cl_banking_business_bancoestado
- Banco Internacional:
cl_banking_business_bancointernacional
- Banco Santander:
cl_banking_business_bancosantander
- Banco Security:
cl_banking_business_bancosecurity
- BCI:
cl_banking_business_bancobci
- Consorcio:
cl_banking_business_bancoconsorcio
- Itaú:
cl_banking_business_bancoitau
- Scotiabank:
cl_banking_business_bancoscotiabank
- Banco BICE:
- Entrepreneur
- BCI:
cl_banking_entrepreneur_bancobci
- BCI:
- Personal
- Demobank
- Banco BICE:
cl_banking_personal_bancobice
- Banco de Chile:
cl_banking_personal_bancochile
- BancoEstado:
cl_banking_personal_bancoestado
- Banco Falabella:
cl_banking_personal_bancofalabella
- Banco Ripley:
cl_banking_personal_bancoripley
- Banco Santander:
cl_banking_personal_bancosantander
- Banco Security:
cl_banking_personal_bancosecurity
- BCI:
cl_banking_personal_bancobci
- Consorcio:
cl_banking_personal_bancoconsorcio
- Itaú:
cl_banking_personal_bancoitau
- Scotiabank:
cl_banking_personal_bancoscotiabank
- Copeuch:
cl_banking_personal_bancocoopeuch
- Business
- Servicios
- AFC:
cl_services_afc
- CMF:
cl_services_cmf
- RNDPA:
cl_services_rndpa
- SII:
cl_services_sii
- TGR:
cl_services_tgr
- AFC:
- Banca
Paso dos: Permitir que el usuario genere un PublicToken
Con el LinkToken
generado en el paso anterior, debes invocar el Khipu Web Widget (KWS), donde el usuario final ingresará sus credenciales y otorgará su consentimiento para acceder a los datos, generando así un PublicToken
.
Para hacerlo, sigue estos pasos:
Incluye la biblioteca de KWS en tu página
<head>
...
<script src="https://js.khipu.com/v1/kws.js"></script>
...
</head>
Agrega un elemento ancla
<div id="khipu-web-root"></div>
Configura un Widget Khipu
<script>
// Define a callback function to handle the result
const callback = (result) => {
console.log('Callback handler', result);
// Send the result to your backend
sendTheResultToMyBackend(result);
};
let khipu = new Khipu();
const options = {
mountElement: document.getElementById('khenshin-web-root'), // the anchor element
modal: true, // Set to false if you want it embedded
modalOptions: {
maxWidth: 450,
maxHeight: 750,
},
options: {
style: {
primaryColor: '#8347AD',
fontFamily: 'Roboto',
},
},
}
khipu.init(options, callback);
</script>
Si el usuario completa con éxito el proceso de autenticación y otorga su consentimiento, el result será un objeto JSON con la siguiente estructura:
{
"OperationId": "<A large string>",
"Status": "OK",
"Data": {
"PublicToken": "<A very large string>"
},
"AdditionalInformation": null,
"Error": null,
"LifeSpan": null
}
Por otro lado, si el usuario encuentra una falla o error, e result
tendrá la siguiente estructura:
{
"OperationId": "<A large string>",
"Status": "OK",
"Data": null,
"AdditionalInformation": null,
"Error": {
"Code": "<An error code>",
"Type": "DO_NOT_RETRY",
"Description": "<An explanation of the error that you can show to your user>"
},
"LifeSpan": null
}
Inicia el Khipu Widget con el LinkToken
del Paso Uno
<script>
// Pass the LinkToken obtained in Step One as an argument
khipu.getPublicToken(<LinkToken>);
</script>
El PublicToken
será recibido por la función callback
que hayas proporcionado, y deberás enviarlo a tu backend para su procesamiento posterior.
Paso tres: Intercambiar el PublicToken
por un AccessToken
Finalmente, necesitarás intercambiar el PublicToken
generado en el Paso dos por un AccessToken
de larga duración. Para eso, simplemente haz un POST request al endpoind /public/token/exchange
.
Ejemplo Request
POST https://api.khipu.com/public/token/exchange
Content-Type: application/json
x-api-key: <A VALID API-KEY>
{
"PublicToken": "<The PublicToken obtained in Step Two>"
}
Ejemplo Response
{
"OperationId": "<A large string>",
"Status": "OK",
"Data": {
"AccessToken": "<A very large string>"
},
"AdditionalInformation": null,
"Error": null,
"LifeSpan": null
}
A partir de ahora, puedes utilizar el AccessToken
en todos los endpoints de las APIs de OpenData de Khipu para interactuar en nombre de ese usuario con la institución correspondiente.