Page client_id
OAuth 2.0 de Misskey suit la spécification IndieAuth. Au lieu d’enregistrer votre application sur chaque serveur, vous publiez une page Web et utilisez son URL comme client_id. Cette page n’est pas nécessaire pour MiAuth.
Prérequis
-
client_iddoit être une URL HTTPS, telle quehttps://yoursite/yourapp/. Le serveur Misskey récupère cette page pendant l’autorisation. -
La page doit répertorier chaque
redirect_uride votre application dans une balise<link>:<link rel="redirect_uri" href="yourscheme://oauth/callback"> -
Le
redirect_uride la requête d’autorisation doit correspondre exactement à une URL d’une balise<link>, y compris le schéma, la casse et la barre oblique finale. Écrivez-le de la même façon aux deux endroits. -
redirect_urin’a pas besoin d’utiliser HTTPS. Misskey exige HTTPS uniquement pourclient_id, doncredirect_uripeut être l’URL de schéma personnalisé de votre application. Misskey redirige alors directement le navigateur vers l’application, par exemple versyourscheme://oauth/callback?code=...&state=....
Exemple de page
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
<link rel="redirect_uri" href="yourscheme://oauth/callback">
</head>
<body>
<div class="h-app">
<a href="https://yoursite/yourapp/" class="u-url p-name">Your Misskey App</a>
</div>
</body>
</html>
Le bloc h-app indique à Misskey le nom de votre application. Misskey l’affiche sur l’écran d’autorisation.
Transmettez les mêmes valeurs à la bibliothèque :
MisskeyOAuthConfig(
host: 'misskey.io',
clientId: 'https://yoursite/yourapp/',
redirectUri: 'yourscheme://oauth/callback',
scope: 'read:account write:notes',
callbackScheme: 'yourscheme',
)
Lorsque redirectUri utilise un schéma personnalisé, la bibliothèque attend ce schéma et ignore callbackScheme. Ce paramètre reste obligatoire.
Facultatif : page relais HTTPS
Vous pouvez également utiliser une page HTTPS comme redirect_uri et transférer le résultat vers votre schéma personnalisé depuis cette page. Misskey ne l’exige pas. Si vous choisissez cette configuration :
- Répertoriez plutôt la page relais dans la balise
<link>, par exemple<link rel="redirect_uri" href="https://yoursite/yourapp/redirect.html">. - Définissez
redirectUrisur l’URL de la page relais. - Définissez
callbackSchemesur le schéma vers lequel la page effectue le transfert.
<!DOCTYPE html>
<html>
<head>
<meta name="referrer" content="no-referrer">
</head>
<body>
<script>
// Ne transfère que les paramètres présents. Les erreurs contiennent également `state`.
const source = new URLSearchParams(window.location.search);
const forwarded = new URLSearchParams();
for (const name of ['code', 'state', 'error', 'error_description', 'iss']) {
// Transfère également les valeurs dupliquées afin que la bibliothèque puisse les rejeter.
for (const value of source.getAll(name)) forwarded.append(name, value);
}
window.location.replace(`yourscheme://oauth/callback?${forwarded}`);
</script>
</body>
</html>
- La bibliothèque vérifie
stateavant de lireerror; la page doit donc transférerstateen cas de succès comme d’erreur. - L’URL contient le code d’autorisation. Ne chargez pas de scripts tiers sur cette page.
Erreurs courantes
Invalid redirect_uri: leredirect_uride la requête ne correspond exactement à aucune balise<link rel="redirect_uri">de la page client_id. Vérifiez le schéma, la casse du domaine et les barres obliques finales.- Le navigateur ne revient pas à l’application : le schéma de
redirect_uri(ou celui vers lequel la page relais transfère) n’est pas enregistré dans l’application. Consultez Configuration des plateformes.