Ce manuel s’adresse aux sites construits avec uniquement HTML, CSS et JavaScript (sans React). Il remplace les anciennes pages sur
developers.intastellarsolutions.com/identity/sign-in/web/docs/js-docs.
Le comportement correspond au paquet npm publié @intastellar/signin-sdk-react (voir dist/api.js / dist/useIntastellar.js, par ex. api.js sur jsDelivr). Votre JS brut doit suivre le même flux pour rester compatible avec Intastellar Accounts.
Remarque : Les requêtes automatisées vers l’ancienne URL js-docs reçoivent parfois uniquement l’enveloppe du site, pas l’article complet. Cette page est l’emplacement pris en charge pour ce contenu.
Ce dont vous avez besoin (liste de contrôle)
- HTTPS en production (fenêtres contextuelles et cookies).
- Fenêtres contextuelles autorisées pour votre origine.
- Client ID Intastellar et nom d’affichage de l’application enregistré (
appName/service). - Une petite étape de build (esbuild, Vite, Webpack, etc.) qui bundle
@intastellar/signin-sdk-reactpour le navigateur. Le paquet est en CommonJS et déclare React comme dépendance pair ; si le bundler inclut React pour un bundle qui n’utilise queIntastellarAPI, stubbez ou omettez React ou installez les pairs pour que la résolution réussisse.
Ancienne balise script (à ne pas utiliser)
L’ancien modèle utilisait :
<script src="https://account.api.intastellarsolutions.com/insign/client.js"></script>Cette URL renvoie 404. Les nouveaux sites doivent utiliser IntastellarAPI depuis le paquet npm (bundlé pour le navigateur), pas cette URL héritée.
Questions fréquentes
Vous préférez React ?
Utilisez @intastellar/signin-sdk-react — Intastellar Sign-In — React et JavaScript.
Fenêtre contextuelle bloquée ou fenêtre de connexion qui se ferme tout de suite
Le flux exige window.open. Demandez aux visiteurs d’autoriser les fenêtres contextuelles pour votre site. Voir Déconnexion, erreurs et dépannage.
« Rien ne se passe » après la connexion dans la fenêtre contextuelle
Vous devez renvoyer un message à la fenêtre contextuelle lorsque vous recevez le jeton (voir le flux ci-dessous). Omettre cette étape casse le flux hébergé.
Quel nom de cookie ?
Ce flux définit inta_acc en cas de succès (voir l’exemple ci-dessous). Traitez-le comme partie du contrat d’intégration avec le comportement du SDK, pas comme une valeur à copier depuis des sites au hasard.
Référence technique — configuration (identique à IntastellarConfig)
| Champ | Obligatoire | Défaut / notes |
|---|---|---|
appName | Oui | Service enregistré / nom d’affichage de l’application. |
clientId | Oui | Clé OAuth envoyée comme paramètre de requête key. |
loginUri | Non | Si omis, le SDK utilise uniquement hostname + port + pathname (sans https://). Utilisé comme paramètre de requête continue. |
scopes | Non | Par défaut dans le hook React : profile. Passé comme scope et encodé dans entryFlow comme btoa(scopes). |
type | Non | 'signin' (défaut) ou 'signup' — modifie l’URL hébergée (voir ci-dessous). |
email | Non | Si défini avec type: 'signin', ouvre l’URL du flux de saisie mot de passe. |
URL hébergées (IntastellarAPI.buildLoginUrl)
Le SDK choisit l’URL de base comme suit (api.js) :
- Par défaut (sélecteur OAuth) :
https://www.intastellaraccounts.com/signin/v2/ws/oauth/oauthchooser - E-mail + connexion (
emaildéfini ettype === 'signin') :
https://www.intastellaraccounts.com/signin/v2/ws/oauth/pwd - Inscription (
type === 'signup') :
https://www.intastellaraccounts.com/Signup/
Les paramètres de requête incluent (d’après l’implémentation) : service (nom d’application), continue (URI de connexion), entryFlow (btoa(scopes)), key (client id), access_id (hôte style parent encodé, avec port si présent), passive, flowName, Entry, scope, et éventuellement identifier (e-mail).
URL de base de l’API et points de terminaison HTTP
- Base :
https://apis.intastellaraccounts.com(IntastellarAPI.baseUrl).
Vérifier le jeton (après que la fenêtre contextuelle a envoyé la chaîne de jeton à l’opener) :
GET /verify- En-tête :
Authorization: Bearer <token> Content-Type: application/json
Utilisateur actuel (session cookie first-party sur votre domaine) :
GET /usercontent/js/getuser?origin=<window.location.host>credentials: 'include', mode CORScors
Flux fenêtre contextuelle et postMessage (identique à useIntastellar)
-
Construire l’URL de connexion avec
IntastellarAPI.buildLoginUrl(...). -
L’ouvrir avec :
window.open(url, 'intastellarLogin', 'height=719,width=500,left=100,top=100,resizable=no') -
Écouter sur
windowl’événementmessage. -
Lorsque
event.dataest une chaîne non vide (le jeton), envoyer immédiatement à la fenêtre contextuelle :loginWindow.postMessage("iframe-token-received", event.origin);Omettre cela casse le flux hébergé.
-
Retirer votre écouteur, appeler
IntastellarAPI.verifyToken(token), puis persister la session. Le hook React définit un cookie first-party :- Nom :
inta_acc - Valeur : la chaîne jeton
- Domaine : hôte style parent dérivé comme
getDomain()du SDK (retirer les sous-domaines lorsque le premier label n’est pas numérique, puis supprimer tout port pour le domaine du cookie) - Chemin :
/ - Expiration : le hook utilise environ 2 ans dans le futur
- Nom :
-
Si l’utilisateur ferme la fenêtre contextuelle sans terminer la connexion, effacez l’intervalle et retirez l’écouteur (le SDK vérifie
popup.closedchaque seconde).
En production, validez event.origin par rapport aux origines documentées par Intastellar pour votre environnement avant de faire confiance à event.data.
Exemple : index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Sign in</title>
<link rel="stylesheet" href="/css/site.css" />
</head>
<body>
<button type="button" id="inta-signin">Sign in with Intastellar</button>
<script src="/js/intastellar-signin-bundle.js"></script>
</body>
</html>Construisez intastellar-signin-bundle.js à partir d’un fichier d’entrée qui importe IntastellarAPI et attache le gestionnaire de clic (voir ci-dessous).
Exemple : module d’entrée vanilla (reflète useIntastellar pour la connexion)
Même logique de contrôle que signin() dans useIntastellar.js, sans état React.
import { IntastellarAPI } from "@intastellar/signin-sdk-react";
const config = {
appName: "Your registered app display name",
clientId: "your-client-id",
// loginUri: optional — defaults to hostname + port + pathname
scopes: "profile",
type: "signin",
};
function getDomain() {
let domain = window.location.hostname || window.location.host;
const domainParts = domain.split(".");
if (domainParts.length > 2) domainParts.shift();
if (isNaN(Number(domainParts[0]))) domain = domainParts.join(".");
return domain.split(":")[0];
}
function setCookie(name, value, domain, expires) {
let cookieString = `${name}=${value}; domain=${domain}; path=/`;
if (expires) cookieString += `; expires=${expires.toUTCString()}`;
document.cookie = cookieString;
}
function openIntastellarSignIn(email) {
const loginUri =
config.loginUri ??
`${location.hostname}${location.port ? ":" + location.port : ""}${location.pathname}`;
const loginUrl = IntastellarAPI.buildLoginUrl({
appName: config.appName,
clientId: config.clientId,
loginUri,
scopes: config.scopes || "profile",
email,
type: config.type || "signin",
});
const loginWindow = window.open(
loginUrl,
"intastellarLogin",
"height=719,width=500,left=100,top=100,resizable=no",
);
if (!loginWindow) {
alert("Please enable popups for this website");
return;
}
function onMessage(event) {
const token = event.data;
if (!(token && typeof token === "string")) return;
loginWindow.postMessage("iframe-token-received", event.origin);
window.removeEventListener("message", onMessage);
IntastellarAPI.verifyToken(token)
.then((account) => {
const expires = new Date();
expires.setFullYear(expires.getFullYear() + 2);
setCookie("inta_acc", token, getDomain(), expires);
console.log("Signed in:", account.user);
if (!loginWindow.closed) loginWindow.close();
})
.catch((err) => {
console.error(err);
if (!loginWindow.closed) loginWindow.close();
});
}
window.addEventListener("message", onMessage);
const timer = setInterval(() => {
if (loginWindow.closed) {
clearInterval(timer);
window.removeEventListener("message", onMessage);
}
}, 1000);
}
document.getElementById("inta-signin")?.addEventListener("click", () => {
openIntastellarSignIn();
});Optionnel : après une connexion réussie, appelez IntastellarAPI.getUsers() pour vous aligner sur la vérification « qui est connecté » du SDK (même comportement cookie + origine).
Déconnexion (même idée que le hook)
Effacez le cookie de session sur votre domaine parent et rechargez, comme logout du SDK :
const domain = getDomain();
document.cookie = `inta_acc=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=.${domain};`;
window.location.reload();Liens connexes
- Premiers pas
- Sessions, cookies et jetons
- Déconnexion, erreurs et dépannage
- Après
npm install, voirTROUBLESHOOTING.mddansnode_modules/@intastellar/signin-sdk-react/pour les problèmes spécifiques au SDK.
Last updated