OAuth 2.0
Cuando usar OAuth 2.0
Te recomendamos esta implementación cuando los usuarios de tu plataforma tienen contratado Autoinspector y vos unicamente actúas como intermediario para realizar consumos sobre la API con la identidad de otro usuario
Cuando NO usar OAuth 2.0
No te recomendamos esta implementación cuando tu empresa o plataforma puede consumir Autoinspector API directamente mediante el uso de API Keys, principalmente para evitar el costo de administrar tokens de corta vida
Glosario
Client Application ID
: Identificador único de tu plataforma/aplicación dentro de Autoinspector.Scopes
: Los recursos del usuario a los cuales quieres tener acceso.Authorization Code
: El código generado luego de que el usuario haya dado el consentimiento de querer conectarse con tu plataforma.
Scopes
Los recursos de un usuario a los cuales puedes acceder son:
memberships
: Te permite acceder a la información de cuáles son las empresas a la que el usuario pertenece.account
: Te permite acceder a la información pública del usuario.inspections
: Te permite acceder a la información de las inspecciones y la habilidad de crear una de ellas.
Authorization Code Flow
Un usuario de Autoinspector se conecta a tu plataforma pasando por los siguientes pasos:
- Desde una página en tu plataforma, el usuario hace click en un link que lo redirecciona a Autoinspector Dashboard. Dicho link tiene que tener en sus parámetros el
Client Application ID
y losScopes
a los que tu plataforma desea acceder. - En Autoinspector Dashboard, el usuario dará el consentimiento necesario para conectarse con tu plataforma.
- El usuario es redireccionado a tu plataforma con un
Authorization Code
en los parámetros de la URL. - Tu plataforma realiza el intercambio del Authorization Code por un
Access Token
válido.
1. Crear una aplicación OAuth
Para empezar con tu integración, dirígete a Developer Settings
1. En la sección de OAuth Aplicaciones haz click sobre el botón: Crear una aplicación
2. Rellena el formulario con la información necesaria y envía el formulario
3. Obtendrás el Client Application ID y el Client Secret. Tenlo a mano para poder construir el Authorization Link.
Authorization Link
Con los dos pasos realizados anteriormente, ya te encuentras listo para crear el Authorization Link.
https://dashboard.autoinspector.ai/oauth/connect?client_app_id=61f57567e3be53561a89e7ce&scopes=inspections&scopes=memberships
Este endpoint debe recibir dos parámetros:
- Tu
client_app_id
generado al crear la OAuth application. - Los
scopes
a los cuales deseas acceder.
2. Un usuario conecta su cuenta
Luego de que el cliente hace click al Authorization Link, será redireccionado a la página de Autoinspector en donde se le preguntará si quiere conectar con tu plataforma.
El proceso de crear una cuenta en Autoinspector o ingresar en la plataforma es responsabilidad nuestra, no debes preocuparte por eso. Todo viene incluído dentro del Authorization Code Flow.
Si el usuario ya se encuentra logueado, le aparecerá directamente la página de consentimiento
Si el usuario no tiene una cuenta, deberá registrarse.
3. El usuario es redirigido a tu plataforma
Luego de que el cliente haya otorgado los permisos para conectar su cuenta en tu plataforma, será redirigido a la página de tu aplicación que corresponda al link de Callback URL
configurado al crear la OAuth Application.
Para culminar con éxito la conexión, nosotros te pasamos en el Callback URL:
- El
Authorization Code
(code en los parámetros) para intercambiar por un Access Token. Tiene una expiración de 10 minutos y es de único uso.
https://your-callback-url/auth?code=7ba2af4264226f464f9a199861e49dbd
4. La plataforma completa el flujo
Intercambia el código recibido por un Access Token.
- Node.JS
- PHP
const Autoinspector = require('autoinspector')
const autoinspector = new Autoinspector({
apikey: 'YOUR_API_KEY',
})
const accessToken = await autoinspector.oauth.exchangeCodeForAccessToken(
'THE_CODE_RECEIVED_IN_PARAMS',
)
// Make sure you have AUTOINSPECTOR_OAUTH_CLIENT_APP_ID and AUTOINSPECTOR_OAUTH_CLIENT_SECRET injected as env variables
$autoinspector = new \\Autoinspector\\AutoinspectorClient([]);
$access_token = $autoinspector->oauth->exchangeCodeForAccessToken("THE_CODE_RECEIVED_IN_PARAMS");
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expires_in": 4324324
}
Listo! El usuario ya se encuentra conectado a tu plataforma. Guarda en tu base de datos el access_token
. Este token te servirá para autenticarte en las request que realices a Autoinspector API. Para poder hacerlo, sólo debes pasar en el header de la request:Authorization: Bearer $access_token
El refresh_token
puede usarse para generar nuevos access_token cuando el actual haya expirado. Te recomendamos que también guardes este tipo de token ya que sólo se generará una única vez cuando realices el exchange del código por el access_token.
Refrescar un Access Token
Si necesitas refrescar un access_token porque el que tienes expiró, puedes hacerlo pasando a Autoinspector API el refresh_token generado anteriormente:
- Node.JS
- PHP
const Autoinspector = require('autoinspector')
const autoinspector = new Autoinspector({
apikey: 'YOUR_API_KEY',
})
const accessToken = await autoinspector.oauth.refreshAccessToken(
'YOUR_REFRESH_TOKEN',
)
// Make sure you have AUTOINSPECTOR_OAUTH_CLIENT_APP_ID and AUTOINSPECTOR_OAUTH_CLIENT_SECRET injected as env variables
$autoinspector = new \\Autoinspector\\AutoinspectorClient([]);
$access_token = $autoinspector->oauth->refreshAccessToken("YOUR_REFRESH_TOKEN");
Samples
Puedes encontrar un ejemplo de cómo realizar toda esta implementación desde cero.