Auth
Connexion Google (OAuth)
Permettez aux utilisateurs de votre produit (web, mobile, outil interne) de se connecter avec leur compte Google. Ce guide s’applique à toute application branchée sur Kuunda Auth — pas seulement à un scénario de migration.
1. Principe du flux
Google ne parle pas directement à votre front. Kuunda Auth est l’intermédiaire : c’est lui qui reçoit le callback Google, crée ou retrouve l’utilisateur, puis renvoie la session vers votre application.
- L’utilisateur clique sur Continuer avec Google dans votre app.
- Le navigateur est redirigé vers Kuunda Auth (
/auth/v1/authorize). - Kuunda Auth redirige vers Google (écran de consentement).
- Google rappelle Kuunda Auth sur l’URI de redirection (callback).
- Kuunda Auth redirige vers votre Site URL /
redirectToavec une session (fragment#access_token=…).
À la fin, l’utilisateur existe dans Auth → Utilisateurs et votre app peut appeler l’API (REST, Storage, etc.) avec le JWT.
2. Les trois URLs (à ne pas confondre)
La plupart des erreurs viennent d’un mélange entre ces adresses. Elles n’ont pas le même rôle.
| URL | Où elle se configure | Rôle |
|---|---|---|
| URI de redirection Google https://api.kuunda-cloud.com/auth/v1/callback | Google Cloud → client OAuth | Callback Google → Kuunda Auth. Ce n’est pas l’URL de votre site. |
| Site URL | Kuunda → Auth → Providers | Destination par défaut après login (origine de votre front, avec slash final si indiqué dans la console). |
| Redirect URLs | Kuunda → Auth → Providers | Allowlist des redirectTo que votre SDK peut demander (localhost, preview, prod). |
Copiez l’URI affichée dans Kuunda
https://api.kuunda-cloud.com/auth/v1/callback — pas le sous-domaine {ref}.kuunda-cloud.com. Sans slash final.3. Créer le client OAuth Google
Vous pouvez créer un client neuf, ou réutiliser un client existant (autre backend, ancienne stack, outil interne) : il suffit d’ajouter l’URI Kuunda dans la liste des redirections, à côté des URIs déjà présentes, jusqu’à la bascule complète.
- Ouvrez Google Cloud → Identifiants.
- Créez (ou ouvrez) un client de type Application Web — pas Android, iOS ou « application de bureau ».
- Renseignez un nom lisible (ex. Kuunda — Mon app).
- Dans URI de redirection autorisés, ajoutez exactement :
Si le projet est en Auth dédiée (forfait Enterprise), l’URI peut être :https://api.kuunda-cloud.com/auth/v1/callbackhttps://{ref}.kuunda-cloud.com/auth/v1/callback - Dans Origines JavaScript autorisées, ajoutez au minimum :
https://api.kuunda-cloud.com— Auth partagéehttps://app.kuunda-cloud.com— bouton Tester de la consolehttps://{ref}.kuunda-cloud.com— API via le sous-domaine projet- L’origine de votre front :
https://app.exemple.ci, ethttp://localhost:3000en local
- Enregistrez, puis copiez le Client ID et le Client secret.
L’écran de consentement Google (marque, domaines, utilisateurs de test en mode « Testing ») doit être publié ou, en développement, votre compte Google doit figurer parmi les testeurs.
4. Configurer le projet Kuunda
Dans la console : https://app.kuunda-cloud.com → votre projet → Auth → Providers.
URLs du projet
Carte URL du site / redirections:
- Site URL — origine qui recevra la session après login. Exemples :
http://localhost:3000/,https://app.exemple.ci/, ouhttps://app.kuunda-cloud.com/pour tester depuis le dashboard. - Redirect URLs — toutes les origines que vous passerez en
redirectTo(une par ligne). Incluez localhost et la prod.
Activer Google
- Déplier la carte Google.
- Cocher Activer Google.
- Coller le Client ID et le Client secret.
- Vérifier l’alerte URI de redirection: la même valeur doit figurer dans Google Cloud.
- Enregistrer — le badge passe à Activé.
5. Tester
- Ouvrez une fenêtre de navigation privée (évite un compte Google déjà lié par erreur).
- Dans la console Kuunda, bouton Tester sur la carte Google — ou lancez le flux depuis votre app (section suivante).
- Choisissez un compte Google et acceptez les permissions.
- Vous devez atterrir sur la Site URL avec un fragment
#access_token=…(et en généralrefresh_token). - Dans Auth → Utilisateurs, l’utilisateur apparaît (e-mail Google, identité
custom:proj-{ref}-google).
6. Intégrer dans votre application
Utilisez le SDK @kuunda/kuunda-js. URL du projet et clé anon: Paramètres → API dans la console. N’exposez jamais la clé service_role dans le navigateur.
Initialiser le client
import { createClient } from '@kuunda/kuunda-js';
const kuunda = createClient(
'https://{ref}.kuunda-cloud.com',
'kuunda_anon_…',
{ projectRef: '{ref}' }
);Bouton « Continuer avec Google »
await kuunda.auth.signInWithOAuth({
provider: 'google',
options: {
redirectTo: 'https://app.exemple.ci/auth/callback',
},
});En navigateur, cette méthode redirige immédiatement vers Kuunda Auth. redirectTo doit être listé dans les Redirect URLs du projet. projectRef est obligatoire pour que provider: 'google' soit réécrit vers le fournisseur du projet.
Nom du provider (SDK vs HTTP)
Kuunda Auth réserve google, github, facebook, apple, azure, x. Kuunda enregistre donc un fournisseur custom par projet, avec des tirets (identifiant sans underscore).
| Fournisseur | SDK | HTTP /authorize |
|---|---|---|
| custom:proj-{ref}-google | ||
| GitHub | github | custom:proj-{ref}-github |
| custom:proj-{ref}-facebook | ||
| Apple | apple | custom:proj-{ref}-apple |
| Microsoft (Azure) | azure | custom:proj-{ref}-azure |
| X (Twitter) | x (alias twitter) | custom:proj-{ref}-x |
provider=google via la passerelle
https://{ref}.kuunda-cloud.com, /auth/v1/authorize?provider=google est réécrit vers custom:proj-{ref}-google (pas besoin de l’identifiant custom à la main). Préférez quand même @kuunda/kuunda-js. Sur l’hôte api., passez apikey en query et la ref projet (sous-domaine ou header).Sans SDK (HTTP)
Équivalent (sous-domaine projet — apikey optionnel sur cet hôte ; recommandé ailleurs) :
https://{ref}.kuunda-cloud.com/auth/v1/authorize?provider=google&redirect_to=https%3A%2F%2Fapp.exemple.ci%2Fauth%2FcallbackForme explicite toujours valide : provider=custom:proj-{ref}-google&apikey=kuunda_anon_…
Après le retour
Kuunda Auth renvoie la session dans le fragment d’URL (#access_token=…&refresh_token=…). Sur la page de destination :
- Lisez
kuunda.auth.getSession()si vous avez déjà persisté une session, ou reconstituez-la depuis le hash puissetSession. - Nettoyez le hash de la barre d’adresse (évite de fuiter le jeton dans l’historique ou les analytics).
- Les appels
kuunda.from(…)partent alors avec le JWT ; la RLS s’applique à l’utilisateur Google.
Scopes
options.scopes et déclarez-les aussi dans l’écran de consentement Google.7. Checklist production
- Client OAuth Google en type Application Web, écran de consentement en production (pas « Testing »).
- URI de callback Kuunda enregistrée à l’identique (copier-coller depuis la console, sans slash final).
- Origines JS : domaine de prod +
https://api.kuunda-cloud.com; retirez localhost si vous ne le voulez plus. - Site URL et Redirect URLs Kuunda pointent vers HTTPS de production.
- Clé anon uniquement dans le front ; secret Google uniquement dans la console Kuunda.
- Si vous aviez déjà un autre callback (ancien hébergeur, autre BaaS), gardez-le jusqu’à validation du cutover, puis retirez-le.
8. Dépannage
| Symptôme | Cause probable | Quoi faire |
|---|---|---|
| redirect_uri_mismatch | L’URI envoyée à Google ≠ celle du client OAuth (souvent le sous-domaine projet à la place de l’API). | Coller l’URI de l’alerte Kuunda. En SaaS : https://api.kuunda-cloud.com/auth/v1/callback. |
| invalid_api_key | Authorize sans clé anon, ou mauvaise clé. | Recharger Providers ; l’URL de test doit contenir apikey=kuunda_anon_…. |
| Erreur de redirect après Google | redirect_to / Site URL hors liste d’autorisations Auth. | Ajouter l’origine exacte dans Auth → URLs du projet. |
| Unsupported provider | HTTP provider=google (réservé), mauvais SDK, ou alias SDK sans projectRef. Même piège pour GitHub, Apple, etc. | SDK : @kuunda/kuunda-js + projectRef. HTTP : custom:proj-{ref}-google (tirets). |
| Écran Google « app non vérifiée » | Consentement en mode Testing / app non publiée. | Ajouter le compte comme testeur, ou publier l’écran de consentement. |
| Pas d’utilisateur dans la console | Le flux s’est arrêté avant le callback Kuunda, ou mauvais projet. | Vérifier Client ID du bon projet et que Google est Activé + Enregistré. |
Ensuite
- Documentation développeur — clés API, premier SELECT, Auth / Storage / Realtime.
- Kuunda Cloud Managed — Management API, PAT, agents et CI.
- Import de données — si vous basculez un existant (SQL, Auth, fichiers).