Las claves API de usuario permiten que los dispositivos o servicios se comuniquen con App Services en nombre de un usuario sin compartir sus credenciales. El usuario autenticado puede revocar las claves API de usuario en cualquier momento. No caducan automáticamente.
Puede administrar una clave API de usuario con la ClienteApiKeyAuth al que se accede con la propiedad User.apiKeys de un usuario autenticado.
Ganchos de React
Si estas usando @realm/react, puede acceder al cliente ApiKeyAuth de un usuario con el gancho useUser() en un componente envuelto por UserProvider.
import {useUser} from '@realm/react';
const user = useUser(); const createUserApiKey = async () => { const {_id, key, name, disabled} = await user?.apiKeys.create(apiKeyName); // ...Do something with API key like save it // or share it with external service that authenticates // on user's behalf. };
Crear una clave API de usuario
Para crear una nueva clave API de usuario, pase un nombre que sea único entre todas las claves API del usuario a ApiKeyAuth.create().
El SDK devuelve el valor de la clave API del usuario al crearla. Asegúrese de almacenar el valor key de forma segura para poder usarlo al iniciar sesión. Si pierde o no almacena el valor key, no podrá recuperarlo. Deberá crear una nueva clave API del usuario.
No se puede crear una clave API de usuario para una clave API de servidor o para un usuario anónimo.
const {_id, key, name, disabled} = await user?.apiKeys.create(apiKeyName);
Buscar una clave API de usuario
Para obtener una matriz que enumera todas las claves API de un usuario, llame a ApiKeyAuth.fetchAll().
Para encontrar una clave API específica, pase la clave _id a ApiKeyAuth.fetch().
const getUserApiKey = async () => { // List all of a user's keys const keys = await user.apiKeys.fetchAll(); // Get a specific key by its ID const key = await user!.apiKeys.fetch(apiKey!._id); };
Habilitar o deshabilitar una clave de API
Para habilitar o deshabilitar una clave API de usuario, pasa el _id de la clave a ApiKeyAuth.enable() o ApiKeyAuth.disable(). Cuando una clave está deshabilitada, no puede usarse para iniciar sesión en nombre del usuario.
await user!.apiKeys.enable(cloudApiKey!._id);
await user!.apiKeys.disable(cloudApiKey!._id);
Eliminar una clave API
Para eliminar permanentemente una API de usuario, pase el valor de la clave _id a ApiKeyAuth.delete(). Las claves eliminadas no se pueden recuperar.
await user!.apiKeys.delete(cloudApiKey!._id);