SDK et iframe
Un bouton d'upload et une visionneuse chiffrés de bout en bout, en quelques lignes. Moins de 3 Ko.
Navigateur : @drivecord/sdk
const dc = Drivecord.init({
clientId: "app_…",
redirectUri: location.origin + "/drivecord-callback",
});
await dc.signIn(); // popup OAuth + PKCE
dc.mountUploader(document.getElementById("up"), {
onUploaded: ({ fileId, size }) => save(fileId),
});
dc.mountViewer(document.getElementById("view"), { fileId });
const { files } = await dc.api("/files"); // API v2 avec le jeton de l'app
La page de redirection appelle simplement Drivecord.completeSignIn(). Le SDK n'a aucune dépendance, et il est publié avec une empreinte SRI.
Ce qui se passe dans l'iframe
- Le fichier est chiffré dans l'iframe Drivecord : ton site ne voit ni clé, ni nom, ni contenu.
- Seules les origines enregistrées pour ton application peuvent encadrer l'iframe (
frame-ancestors). - Les messages sont versionnés et chaque côté vérifie l'origine et la fenêtre émettrice.
uploadedne contient que{ fileId, size }. - La connexion passe par une fenêtre Drivecord (ticket à usage unique). Le jeton de session reste en mémoire dans l'iframe, jamais dans un cookie.
Serveur : @drivecord/node
import { DrivecordNode } from "@drivecord/node";
const dc = new DrivecordNode({ token: process.env.DRIVECORD_TOKEN, driveKey });
const { fileId } = await dc.upload({ name: "rapport.pdf", type: "application/pdf", data });
const file = await dc.download(fileId); // { name, type, data }
Le même code de chiffrement que l'application web est utilisé, donc les fichiers sont interchangeables.