Ce document explique comment les applications installées sur des appareils tels que les téléphones, les tablettes et les ordinateurs utilisent les points de terminaison OAuth 2.0 de Google pour autoriser l'accès à l'API YouTube Data.
OAuth 2.0 permet aux utilisateurs de partager certaines données avec une application tout en préservant la confidentialité de leurs noms d'utilisateur, mots de passe et autres informations. Par exemple, une application peut utiliser OAuth 2.0 pour obtenir l'autorisation de récupérer les données YouTube d'une chaîne.
Les applications installées sont distribuées sur des appareils individuels, et il est supposé que ces applications ne peuvent pas garder de secrets. Ils peuvent accéder aux API Google lorsque l'utilisateur est présent dans l'application ou lorsque l'application s'exécute en arrière-plan.
Ce flux d'autorisation est semblable à celui utilisé pour les applications de serveur Web. La principale différence est que les applications installées doivent ouvrir le navigateur système et fournir un URI de redirection local pour gérer les réponses du serveur d'autorisation de Google.
Bibliothèques et exemples
Pour les applications mobiles, nous vous recommandons d'utiliser la dernière version de la bibliothèque native Google Identity Services pour Android et de la bibliothèque native Google Sign-In pour iOS. Ces bibliothèques gèrent l'autorisation des utilisateurs et sont plus simples à implémenter que le protocole de niveau inférieur décrit ici.
Pour les applications exécutées sur des appareils qui ne prennent pas en charge un navigateur système ou qui ont des capacités d'entrée limitées, comme les téléviseurs, les consoles de jeux, les caméras ou les imprimantes, consultez OAuth 2.0 pour les téléviseurs et les appareils ou Connexion sur les téléviseurs et les appareils à entrée limitée.
Prérequis
Activer les API pour votre projet.
Toute application qui appelle des API Google doit activer ces API dans API Console.
Pour activer une API pour votre projet :
- Open the API Library dans le Google API Console.
- If prompted, select a project, or create a new one.
- Rechercher et activer l'API YouTube Data sur la page "Bibliothèque" Recherchez les autres API que votre application utilisera et activez-les également.
Créer des identifiants d'autorisation
Toute application qui utilise OAuth 2.0 pour accéder aux API Google doit disposer d'identifiants d'autorisation qui identifient l'application auprès du serveur OAuth 2.0 de Google. Les étapes suivantes expliquent comment créer des identifiants pour votre projet. Vos applications peuvent ensuite utiliser les identifiants pour accéder aux API que vous avez activées pour ce projet.
- Go to the Credentials page.
- Cliquez sur Créer un client.
- Les sections suivantes décrivent les types de clients compatibles avec le serveur d'autorisation de Google. Choisissez le type de client recommandé pour votre application, nommez votre client OAuth et définissez les autres champs du formulaire selon vos besoins.
Android
- Sélectionnez le type d'application Android.
- Saisissez un nom pour le client OAuth. Ce nom s'affiche sur la page de votre projet pour identifier le client.
- Saisissez le nom du package de votre application Android. Cette valeur est définie dans l'
attribut
package
de l'élément<manifest>
dans le fichier manifeste de votre application. - Saisissez l'empreinte du certificat de signature SHA-1 de la distribution de l'application.
- Si votre application utilise la signature d'application Google Play, copiez l'empreinte SHA-1 depuis la page de signature d'application de la Play Console.
- Si vous gérez votre propre keystore et vos propres clés de signature, utilisez l'utilitaire keytool inclus avec Java pour imprimer les informations du certificat dans un format lisible par l'homme. Copiez la valeur
SHA1
dans la sectionCertificate fingerprints
du résultat keytool. Pour en savoir plus, consultez Authentifier votre client dans la documentation des API Google pour Android.
- (Facultatif) Validez la propriété de votre application Android.
- Cliquez sur Créer.
iOS
- Sélectionnez le type d'application iOS.
- Saisissez un nom pour le client OAuth. Ce nom s'affiche sur la page de votre projet pour identifier le client.
- Saisissez l'identifiant du bundle de votre application. L'identifiant du bundle correspond à la valeur de la clé CFBundleIdentifier dans le fichier de ressources de la liste des propriétés d'informations de votre application (info.plist). La valeur s'affiche le plus souvent dans le volet "Général" ou "Signature et capacités" de l'éditeur de projet Xcode. L'ID du bundle est également affiché dans la section "Informations générales" de la page "Informations sur l'app" de l'application sur le site App Store Connect d'Apple.
Vérifiez que vous utilisez le bon ID de bundle pour votre application, car vous ne pourrez pas le modifier si vous utilisez la fonctionnalité App Check.
- (Facultatif)
Saisissez l'ID App Store de votre application si elle est publiée dans l'App Store d'Apple. L'ID sur l'App Store est une chaîne numérique incluse dans chaque URL de l'App Store d'Apple.
- Ouvrez l'application Apple App Store sur votre appareil iOS ou iPadOS.
- Recherchez votre application.
- Sélectionnez le bouton Partager (symbole carré avec une flèche vers le haut).
- Sélectionnez Copier le lien.
- Collez le lien dans un éditeur de texte. L'ID App Store correspond à la dernière partie de l'URL.
Exemple :
https://apps.apple.com/app/google/id284815942
- (Facultatif)
Saisissez votre ID d'équipe. Pour en savoir plus, consultez Trouver votre ID d'équipe dans la documentation du compte de développeur Apple.
Remarque : Le champ "ID d'équipe" est obligatoire si vous activez App Check pour votre client. - (Facultatif)
Activez App Check pour votre application iOS. Lorsque vous activez App Check, le service App Attest d'Apple est utilisé pour vérifier que les requêtes OAuth 2.0 provenant de votre client OAuth sont authentiques et proviennent de votre application. Cela permet de réduire le risque d'usurpation d'identité de l'application. Découvrez comment activer App Check pour votre application iOS.
- Cliquez sur Créer.
UWP
- Sélectionnez le type d'application Plate-forme Windows universelle.
- Saisissez un nom pour le client OAuth. Ce nom s'affiche sur la page de votre projet pour identifier le client.
- Saisissez l'ID Microsoft Store de votre application (12 caractères). Vous trouverez cette valeur dans le Microsoft Partner Center, sur la page Identité de l'application de la section "Gestion des applications".
- Cliquez sur Créer.
Pour les applications UWP, le schéma URI personnalisé ne peut pas comporter plus de 39 caractères.
Identifier les niveaux d'accès
Les niveaux d'accès permettent à votre application de demander uniquement l'accès aux ressources dont elle a besoin, tout en permettant aux utilisateurs de contrôler le niveau d'accès qu'ils accordent à votre application. Il peut donc exister une relation inverse entre le nombre de niveaux d'accès demandés et la probabilité d'obtenir le consentement de l'utilisateur.
Avant de commencer la mise en œuvre de l'autorisation OAuth 2.0, nous vous recommandons d'identifier les champs d'application pour lesquels votre application aura besoin d'une autorisation d'accès.
L'API YouTube Data v3 utilise les champs d'application suivants :
Champ d'application | Description |
---|---|
https://www. |
Gérez votre compte YouTube |
https://www. |
Consulter la liste des membres actuellement actifs de votre chaîne, leur niveau actuel et leur date de souscription |
https://www. |
Afficher, modifier et supprimer définitivement vos vidéos, notes, commentaires et sous-titres YouTube |
https://www. |
Affichez votre compte YouTube |
https://www. |
Gérez vos vidéos YouTube |
https://www. |
Consultez et gérez vos éléments et le contenu associé sur YouTube. |
https://www. |
Affichez les informations privées sur votre chaîne YouTube pertinentes pendant le processus d'audit avec un partenaire YouTube. |
Le document Champs d'application de l'API OAuth 2.0 contient la liste complète des champs d'application que vous pouvez utiliser pour accéder aux API Google.
Obtenir des jetons d'accès OAuth 2.0
Les étapes suivantes montrent comment votre application interagit avec le serveur OAuth 2.0 de Google pour obtenir le consentement d'un utilisateur afin d'effectuer une requête d'API en son nom. Votre application doit obtenir ce consentement avant de pouvoir exécuter une requête d'API Google nécessitant l'autorisation de l'utilisateur.
Étape 1 : Générer un code de vérification et un challenge
Google est compatible avec le protocole Proof Key for Code Exchange (PKCE) pour sécuriser davantage le flux d'application installée. Un code de vérification unique est créé pour chaque demande d'autorisation. Sa valeur transformée, appelée "code_challenge", est envoyée au serveur d'autorisation pour obtenir le code d'autorisation.
Créer le vérificateur de code
Un code_verifier
est une chaîne aléatoire cryptographique à haute entropie utilisant les caractères non réservés [A-Z] / [a-z] / [0-9] / "-" / "." / "_" / "~", avec une longueur minimale de 43 caractères et une longueur maximale de 128 caractères.
Le code de vérification doit avoir un degré d'entropie suffisant pour être impossible à deviner.
Créer le défi de programmation
Deux méthodes de création du code de validation sont acceptées.
Méthodes de génération de défis de programmation | |
---|---|
S256 (recommandé) | Le code challenge est le hachage SHA256 du code verifier encodé en Base64URL (sans remplissage).
|
plain | Le code challenge a la même valeur que le code de vérification généré ci-dessus.
|
Étape 2 : Envoyer une requête au serveur OAuth 2.0 de Google
Pour obtenir l'autorisation de l'utilisateur, envoyez une requête au serveur d'autorisation de Google à l'adresse https://accounts.google.com/o/oauth2/v2/auth
. Ce point de terminaison gère la recherche de sessions actives, authentifie l'utilisateur et obtient son consentement. Le point de terminaison n'est accessible que via SSL et refuse les connexions HTTP (non SSL).
Le serveur d'autorisation accepte les paramètres de chaîne de requête suivants pour les applications installées :
Paramètres | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
client_id |
Obligatoire
ID client de votre application. Vous trouverez cette valeur dans le . |
||||||||||||||||
redirect_uri |
Obligatoire
Détermine la façon dont le serveur d'autorisation de Google envoie une réponse à votre application. Plusieurs options de redirection sont disponibles pour les applications installées. Vous aurez configuré vos identifiants d'autorisation avec une méthode de redirection spécifique. La valeur doit correspondre exactement à l'un des URI de redirection autorisés pour le client OAuth 2.0 que vous avez configuré dans le
de votre client. Si cette valeur ne correspond pas à un URI autorisé, une erreur Le tableau ci-dessous indique la valeur du paramètre
|
||||||||||||||||
response_type |
Obligatoire
Détermine si le point de terminaison Google OAuth 2.0 renvoie un code d'autorisation. Définissez la valeur du paramètre sur |
||||||||||||||||
scope |
Obligatoire
Liste des champs d'application séparés par des espaces qui identifient les ressources auxquelles votre application peut accéder pour le compte de l'utilisateur. Ces valeurs informent l'écran de consentement que Google affiche à l'utilisateur. Les niveaux d'accès permettent à votre application de demander uniquement l'accès aux ressources dont elle a besoin, tout en permettant aux utilisateurs de contrôler le niveau d'accès qu'ils accordent à votre application. Il existe donc une relation inverse entre le nombre de niveaux d'accès demandés et la probabilité d'obtenir le consentement de l'utilisateur. L'API YouTube Data v3 utilise les champs d'application suivants :
Le document Champs d'application de l'API OAuth 2.0 fournit la liste complète des champs d'application que vous pouvez utiliser pour accéder aux API Google. |
||||||||||||||||
code_challenge |
Recommandé
Spécifie un |
||||||||||||||||
code_challenge_method |
Recommandé
Spécifie la méthode utilisée pour encoder un |
||||||||||||||||
state |
Recommandé
Spécifie toute valeur de chaîne que votre application utilise pour maintenir l'état entre votre demande d'autorisation et la réponse du serveur d'autorisation.
Le serveur renvoie la valeur exacte que vous envoyez sous la forme d'une paire Vous pouvez utiliser ce paramètre à plusieurs fins, par exemple pour rediriger l'utilisateur vers la ressource appropriée dans votre application, envoyer des nonces et atténuer la falsification des requêtes intersites. Étant donné que votre |
||||||||||||||||
login_hint |
Optional
Si votre application sait quel utilisateur tente de s'authentifier, elle peut utiliser ce paramètre pour fournir un indice au serveur d'authentification Google. Le serveur utilise l'indice pour simplifier le processus de connexion, soit en préremplissant le champ d'adresse e-mail dans le formulaire de connexion, soit en sélectionnant la session de connexion multiple appropriée. Définissez la valeur du paramètre sur une adresse e-mail ou un identifiant |
Exemples d'URL d'autorisation
Les onglets ci-dessous présentent des exemples d'URL d'autorisation pour les différentes options d'URI de redirection.
Chaque URL demande l'accès à un champ d'application qui permet de récupérer les données YouTube de l'utilisateur.Les URL sont identiques, à l'exception de la valeur du paramètre redirect_uri
. Les URL contiennent également les paramètres obligatoires response_type
et client_id
, ainsi que le paramètre facultatif state
. Chaque URL contient des sauts de ligne et des espaces pour plus de lisibilité.
Schéma d'URI personnalisé
https://accounts.google.com/o/oauth2/v2/auth? scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=com.example.app%3A/oauth2redirect& client_id=client_id
Adresse IP de bouclage
https://accounts.google.com/o/oauth2/v2/auth? scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.force-ssl& response_type=code& state=security_token%3D138r5719ru3e1%26url%3Dhttps%3A%2F%2Foauth2.example.com%2Ftoken& redirect_uri=http%3A//127.0.0.1%3A9004& client_id=client_id
Étape 3 : Google demande le consentement de l'utilisateur
Au cours de cette étape, l'utilisateur décide d'accorder ou non à votre application l'accès demandé. À cette étape, Google affiche une fenêtre de consentement indiquant le nom de votre application et les services de l'API Google auxquels il demande l'autorisation d'accéder à l'aide des identifiants de l'utilisateur, ainsi qu'un récapitulatif des niveaux d'accès à accorder. L'utilisateur peut alors accepter d'accorder l'accès à un ou plusieurs champs d'application demandés par votre application, ou refuser la demande.
Votre application n'a rien à faire à ce stade, car elle attend la réponse du serveur OAuth 2.0 de Google indiquant si un accès a été accordé. Cette réponse est expliquée à l'étape suivante.
Erreurs
Les requêtes envoyées au point de terminaison d'autorisation OAuth 2.0 de Google peuvent afficher des messages d'erreur destinés aux utilisateurs au lieu des flux d'authentification et d'autorisation attendus. Vous trouverez ci-dessous les codes d'erreur courants et les solutions suggérées.
admin_policy_enforced
Le compte Google ne peut pas autoriser un ou plusieurs des niveaux d'accès demandés en raison des règles de son administrateur Google Workspace. Pour en savoir plus sur la façon dont un administrateur peut restreindre l'accès à tous les niveaux d'accès ou aux niveaux d'accès sensibles et restreints jusqu'à ce que l'accès soit explicitement accordé à votre ID client OAuth, consultez l'article d'aide pour les administrateurs Google Workspace Contrôler quelles applications tierces et internes ont accès aux données Google Workspace.
disallowed_useragent
Le point de terminaison d'autorisation s'affiche dans un agent utilisateur intégré non autorisé par les Règles OAuth 2.0 de Google.
Android
Les développeurs Android peuvent rencontrer ce message d'erreur lorsqu'ils ouvrent des demandes d'autorisation dans android.webkit.WebView
.
Les développeurs doivent plutôt utiliser des bibliothèques Android telles que Google Sign-In pour Android ou AppAuth pour Android de l'OpenID Foundation.
Les développeurs Web peuvent rencontrer cette erreur lorsqu'une application Android ouvre un lien Web général dans un user-agent intégré et qu'un utilisateur accède au point de terminaison d'autorisation OAuth 2.0 de Google depuis votre site. Les développeurs doivent autoriser l'ouverture des liens généraux dans le gestionnaire de liens par défaut du système d'exploitation, qui inclut les gestionnaires de liens d'application Android ou l'application de navigateur par défaut. La bibliothèque Android Custom Tabs est également une option compatible.
iOS
Les développeurs iOS et macOS peuvent rencontrer cette erreur lorsqu'ils ouvrent des demandes d'autorisation dans WKWebView
.
Les développeurs doivent plutôt utiliser des bibliothèques iOS telles que Google Sign-In pour iOS ou AppAuth pour iOS de l'OpenID Foundation.
Les développeurs Web peuvent rencontrer cette erreur lorsqu'une application iOS ou macOS ouvre un lien Web général dans un user-agent intégré et qu'un utilisateur accède au point de terminaison d'autorisation OAuth 2.0 de Google depuis votre site. Les développeurs doivent autoriser l'ouverture des liens généraux dans le gestionnaire de liens par défaut du système d'exploitation, qui inclut les gestionnaires de liens universels ou l'application de navigateur par défaut. La bibliothèque SFSafariViewController
est également une option compatible.
org_internal
L'ID client OAuth de la requête fait partie d'un projet limitant l'accès aux comptes Google dans une organisation Google Cloud spécifique. Pour en savoir plus sur cette option de configuration, consultez la section Type d'utilisateur de l'article d'aide "Configurer votre écran de consentement OAuth".
deleted_client
Le client OAuth utilisé pour effectuer la requête a été supprimé. La suppression peut être manuelle ou automatique dans le cas de clients inutilisés . Les clients supprimés peuvent être restaurés dans les 30 jours suivant leur suppression. En savoir plus
invalid_grant
Si vous utilisez un vérificateur de code et un challenge, le paramètre code_callenge
n'est pas valide ou est manquant. Assurez-vous que le paramètre code_challenge
est correctement défini.
Lors de l'actualisation d'un jeton d'accès, il est possible que le jeton ait expiré ou ait été invalidé. Réauthentifiez l'utilisateur et demandez-lui son consentement pour obtenir de nouveaux jetons. Si cette erreur persiste, assurez-vous que votre application a été correctement configurée et que vous utilisez les jetons et paramètres appropriés dans votre demande. Sinon, il est possible que le compte utilisateur ait été supprimé ou désactivé.
redirect_uri_mismatch
Le redirect_uri
transmis dans la demande d'autorisation ne correspond pas à un URI de redirection autorisé pour l'ID client OAuth. Examinez les URI de redirection autorisés dans
.
Le redirect_uri
transmis n'est peut-être pas valide pour le type de client.
Le paramètre redirect_uri
peut faire référence au flux OAuth hors bande (OOB) qui a été abandonné et n'est plus compatible. Consultez le guide de migration pour mettre à jour votre intégration.
invalid_request
Un problème est survenu lors du traitement de votre demande. Plusieurs raisons peuvent expliquer ce problème :
- La demande n'était pas correctement formatée
- Il manquait des paramètres obligatoires dans la requête.
- La requête utilise une méthode d'autorisation non acceptée par Google. Vérifiez que votre intégration OAuth utilise une méthode d'intégration recommandée.
- Un schéma personnalisé est utilisé pour l'URI de redirection : si le message d'erreur Custom URI scheme is not supported on Chrome apps (Le schéma d'URI personnalisé n'est pas compatible avec les applications Chrome) ou Custom URI scheme is not enabled for your Android client (Le schéma d'URI personnalisé n'est pas activé pour votre client Android) s'affiche, cela signifie que vous utilisez un schéma d'URI personnalisé qui n'est pas compatible avec les applications Chrome et qui est désactivé par défaut sur Android. En savoir plus sur les alternatives au schéma d'URI personnalisé
Étape 4 : Gérez la réponse du serveur OAuth 2.0
La manière dont votre application reçoit la réponse d'autorisation dépend du schéma d'URI de redirection qu'elle utilise. Quel que soit le schéma, la réponse contiendra un code d'autorisation (code
) ou une erreur (error
). Par exemple, error=access_denied
indique que l'utilisateur a refusé la demande.
Si l'utilisateur accorde l'accès à votre application, vous pouvez échanger le code d'autorisation contre un jeton d'accès et un jeton d'actualisation, comme décrit à l'étape suivante.
Étape 5 : Échangez le code d'autorisation contre des jetons d'actualisation et d'accès
Pour échanger un code d'autorisation contre un jeton d'accès, appelez le point de terminaison https://oauth2.googleapis.com/token
et définissez les paramètres suivants :
Champs | |
---|---|
client_id |
ID client obtenu à partir de . |
client_secret |
Code secret du client obtenu à partir de . |
code |
Code d'autorisation renvoyé par la requête initiale. |
code_verifier |
Le vérificateur de code que vous avez créé à l'étape 1. |
grant_type |
Comme indiqué dans la spécification OAuth 2.0, la valeur de ce champ doit être définie sur authorization_code . |
redirect_uri |
L'un des URI de redirection listés pour votre projet dans
pour le client_id donné. |
L'extrait de code suivant montre un exemple de requête :
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& client_id=your_client_id& client_secret=your_client_secret& redirect_uri=http://127.0.0.1:9004& grant_type=authorization_code
Google répond à cette requête en renvoyant un objet JSON contenant un jeton d'accès à courte durée de vie et un jeton d'actualisation.
La réponse contient les champs suivants :
Champs | |
---|---|
access_token |
Jeton que votre application envoie pour autoriser une requête d'API Google. |
expires_in |
Durée de vie restante du jeton d'accès, en secondes. |
id_token |
Remarque : Cette propriété n'est renvoyée que si votre demande inclut un champ d'identité, tel que openid , profile ou email . La valeur est un jeton Web JSON (JWT) qui contient des informations d'identité signées numériquement sur l'utilisateur. |
refresh_token |
Jeton que vous pouvez utiliser pour obtenir un nouveau jeton d'accès. Les jetons d'actualisation sont valides jusqu'à ce que l'utilisateur révoque l'accès ou que le jeton d'actualisation expire. Notez que les jetons d'actualisation sont toujours renvoyés pour les applications installées. |
refresh_token_expires_in |
Durée de vie restante du jeton d'actualisation, en secondes. Cette valeur n'est définie que lorsque l'utilisateur accorde un accès limité dans le temps. |
scope |
Champs d'application de l'accès accordé par access_token , exprimés sous la forme d'une liste de chaînes sensibles à la casse et délimitées par des espaces. |
token_type |
Type de jeton renvoyé. Pour le moment, la valeur de ce champ est toujours définie sur Bearer . |
L'extrait de code suivant montre un exemple de réponse :
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/youtube.force-ssl https://www.googleapis.com/auth/calendar.readonly", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
Étape 6 : Vérifiez les habilitations accordées par les utilisateurs
Lorsque vous demandez plusieurs autorisations (habilitations), il est possible que les utilisateurs n'accordent pas à votre application l'accès à toutes. Votre application doit vérifier les champs d'application qui ont été accordés et gérer correctement les situations où certaines autorisations sont refusées, généralement en désactivant les fonctionnalités qui dépendent de ces champs d'application refusés.
Il existe toutefois des exceptions. Les applications Google Workspace Enterprise avec délégation d'autorité au niveau du domaine ou les applications marquées comme fiables contournent l'écran de consentement pour les autorisations précises. Pour ces applications, les utilisateurs ne verront pas l'écran de consentement pour les autorisations précises. Votre application recevra tous les niveaux d'accès demandés ou aucun.
Pour en savoir plus, consultez Gérer les autorisations précises.
Pour vérifier si l'utilisateur a accordé à votre application l'accès à un champ particulier, examinez le champ scope
dans la réponse du jeton d'accès. Champs d'application de l'accès accordé par le jeton d'accès, exprimés sous la forme d'une liste de chaînes sensibles à la casse et délimitées par des espaces.
Par exemple, l'exemple de réponse de jeton d'accès suivant indique que l'utilisateur a accordé à votre application l'accès aux autorisations d'activité Drive et d'événements Agenda en lecture seule :
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "token_type": "Bearer", "scope": "https://www.googleapis.com/auth/youtube.force-ssl https://www.googleapis.com/auth/calendar.readonly", "refresh_token": "1//xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
Appeler des API Google
Une fois que votre application a obtenu un jeton d'accès, vous pouvez l'utiliser pour effectuer des appels à une API Google au nom d'un compte utilisateur donné si le ou les niveaux d'accès requis par l'API ont été accordés. Pour ce faire, incluez le jeton d'accès dans une requête envoyée à l'API en incluant un paramètre de requête access_token
ou une valeur d'en-tête HTTP Authorization
Bearer
. Dans la mesure du possible, l'en-tête HTTP est préférable, car les chaînes de requête ont tendance à être visibles dans les journaux du serveur. Dans la plupart des cas, vous pouvez utiliser une bibliothèque cliente pour configurer vos appels aux API Google (par exemple, lorsque vous appelez l'API YouTube Live Streaming).
Notez que l'API YouTube Live Streaming n'est pas compatible avec le flux de compte de service. Étant donné qu'il n'est pas possible d'associer un compte de service à un compte YouTube, les tentatives d'autorisation de requêtes avec ce flux génèrent une erreur NoLinkedYouTubeAccount
.
Vous pouvez tester toutes les API Google et afficher leurs habilitations sur la page OAuth 2.0 Playground.
Exemples de requêtes HTTP GET
Un appel au point de terminaison
liveBroadcasts.list
(API YouTube Live Streaming) à l'aide de l'en-tête HTTP Authorization: Bearer
peut ressembler à ce qui suit. Notez que vous devez spécifier votre propre jeton d'accès :
GET /youtube/v3/liveBroadcasts?part=id%2Csnippet&mine=true HTTP/1.1 Host: www.googleapis.com Authorization: Bearer access_token
Voici un appel à la même API pour l'utilisateur authentifié à l'aide du paramètre de chaîne de requête access_token
:
GET https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&mine=true
curl
exemples
Vous pouvez tester ces commandes avec l'application en ligne de commande curl
. Voici un exemple qui utilise l'option d'en-tête HTTP (méthode recommandée) :
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/liveBroadcasts?part=id%2Csnippet&mine=true
Vous pouvez également utiliser l'option de paramètre de chaîne de requête :
curl https://www.googleapis.com/youtube/v3/liveBroadcasts?access_token=access_token&part=id%2Csnippet&mine=true
Actualiser un jeton d'accès
Les jetons d'accès expirent régulièrement et deviennent des identifiants non valides pour une requête API associée. Vous pouvez actualiser un jeton d'accès sans demander l'autorisation à l'utilisateur (y compris en son absence) si vous avez demandé un accès hors connexion aux champs d'application associés au jeton.
Pour actualiser un jeton d'accès, votre application envoie une requête HTTPS POST
au serveur d'autorisation de Google (https://oauth2.googleapis.com/token
) qui inclut les paramètres suivants :
Champs | |
---|---|
client_id |
ID client obtenu à partir de API Console. |
client_secret |
Code secret du client obtenu à partir de API Console.
(client_secret ne s'applique pas aux demandes provenant de clients enregistrés en tant qu'applications Android, iOS ou Chrome.)
|
grant_type |
Comme défini dans la spécification OAuth 2.0, la valeur de ce champ doit être définie sur refresh_token . |
refresh_token |
Jeton d'actualisation renvoyé par l'échange de code d'autorisation. |
L'extrait de code suivant montre un exemple de requête :
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=your_client_id& client_secret=your_client_secret& refresh_token=refresh_token& grant_type=refresh_token
Tant que l'utilisateur n'a pas révoqué l'accès accordé à l'application, le serveur de jetons renvoie un objet JSON contenant un nouveau jeton d'accès. L'extrait de code suivant montre un exemple de réponse :
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "https://www.googleapis.com/auth/drive.metadata.readonly https://www.googleapis.com/auth/calendar.readonly", "token_type": "Bearer" }
Notez qu'il existe des limites au nombre de jetons d'actualisation qui seront émis : une limite par combinaison client/utilisateur et une autre par utilisateur pour tous les clients. Vous devez enregistrer les jetons d'actualisation dans un stockage à long terme et continuer à les utiliser tant qu'ils restent valides. Si votre application demande trop de jetons d'actualisation, elle risque d'atteindre ces limites, auquel cas les jetons d'actualisation plus anciens cesseront de fonctionner.
Révoquer un jeton
Dans certains cas, un utilisateur peut souhaiter révoquer l'accès accordé à une application. Un utilisateur peut révoquer l'accès en accédant aux paramètres de son compte. Pour en savoir plus, consultez la section Supprimer l'accès d'un site ou d'une application du document d'aide Applications et sites tiers ayant accès à votre compte.
Il est également possible pour une application de révoquer de manière programmatique l'accès qui lui a été accordé. La révocation programmatique est importante dans les cas où un utilisateur se désabonne, supprime une application ou lorsque les ressources d'API requises par une application ont considérablement changé. En d'autres termes, une partie du processus de suppression peut inclure une requête d'API pour s'assurer que les autorisations précédemment accordées à l'application sont supprimées.
Pour révoquer un jeton de manière programmatique, votre application envoie une requête à https://oauth2.googleapis.com/revoke
et inclut le jeton en tant que paramètre :
curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \ https://oauth2.googleapis.com/revoke?token={token}
Il peut s'agir d'un jeton d'accès ou d'un jeton d'actualisation. Si le jeton est un jeton d'accès et qu'il possède un jeton d'actualisation correspondant, ce dernier sera également révoqué.
Si la révocation est traitée avec succès, le code d'état HTTP de la réponse est 200
. En cas d'erreur, un code d'état HTTP 400
est renvoyé avec un code d'erreur.
Méthodes de redirection d'application
Schéma d'URI personnalisé (Android, iOS, UWP)
Les schémas d'URI personnalisés sont une forme de lien profond qui utilise un schéma défini par l'utilisateur pour ouvrir votre application.
Alternative à l'utilisation de schémas d'URI personnalisés sur Android
Utilisez l'alternative recommandée, qui fournit la réponse OAuth 2.0 directement à votre application, ce qui élimine le besoin d'un URI de redirection.
Migrer vers la bibliothèque Android Google Identity Services
Si vous utilisez un schéma personnalisé pour votre intégration OAuth sur Android, vous devez effectuer les actions suivantes pour migrer complètement vers la bibliothèque Android des services d'identité Google recommandée :
- Mettez à jour votre code pour utiliser la bibliothèque Android Google Identity Services.
- Désactivez la prise en charge du schéma personnalisé dans la console Google Cloud.
Les étapes suivantes expliquent comment migrer vers la bibliothèque Android Google Identity Services :
-
Mettez à jour votre code pour utiliser la bibliothèque Android Google Identity Services :
-
Examinez votre code pour identifier l'endroit où vous envoyez une requête au serveur OAuth 2.0 de Google. Si vous utilisez un schéma personnalisé, votre requête ressemblera à ce qui suit :
https://accounts.google.com/o/oauth2/v2/auth? scope=<SCOPES>& response_type=code& &state=<STATE>& redirect_uri=com.example.app:/oauth2redirect& client_id=<CLIENT_ID>
com.example.app:/oauth2redirect
est l'URI de redirection du schéma personnalisé dans l'exemple ci-dessus. Pour en savoir plus sur le format de la valeur du schéma d'URI personnalisé, consultez la définition du paramètreredirect_uri
. -
Notez les paramètres de requête
scope
etclient_id
dont vous aurez besoin pour configurer le SDK Google Sign-In. -
Suivez les instructions de la section
Autoriser l'accès aux données utilisateur Google pour configurer le SDK. Vous pouvez ignorer l'étape Configurer votre projet Google Cloud Console , car vous réutiliserez le
client_id
que vous avez récupéré à l'étape précédente. -
Suivez les instructions de la section
Demander les autorisations requises par les actions de l'utilisateur. Cela inclut les étapes suivantes :
- Demandez les autorisations à l'utilisateur.
-
Utilisez la méthode
getServerAuthCode
pour récupérer un code d'authentification pour les champs d'application pour lesquels vous demandez l'autorisation. - Envoyez le code d'autorisation au backend de votre application pour l'échanger contre un jeton d'accès et d'actualisation.
- Utilisez le jeton d'accès récupéré pour appeler les API Google au nom de l'utilisateur.
-
Examinez votre code pour identifier l'endroit où vous envoyez une requête au serveur OAuth 2.0 de Google. Si vous utilisez un schéma personnalisé, votre requête ressemblera à ce qui suit :
-
Désactivez la prise en charge du schéma personnalisé dans la console Google APIs :
- Accédez à la liste de vos identifiants OAuth 2.0 et sélectionnez votre client Android.
- Accédez à la section Paramètres avancés, décochez la case Activer le schéma d'URI personnalisé, puis cliquez sur Enregistrer pour désactiver la prise en charge du schéma d'URI personnalisé.
Activer le schéma d'URI personnalisé
Si l'alternative recommandée ne vous convient pas, vous pouvez activer les schémas d'URI personnalisés pour votre client Android en suivant les instructions ci-dessous :- Accédez à la liste de vos identifiants OAuth 2.0 et sélectionnez votre client Android.
- Accédez à la section Paramètres avancés, cochez la case Activer le schéma d'URI personnalisé, puis cliquez sur Enregistrer pour activer la prise en charge du schéma d'URI personnalisé.
Alternative à l'utilisation de schémas d'URI personnalisés dans les applications Chrome
Utilisez l'API Chrome Identity, qui fournit la réponse OAuth 2.0 directement à votre application, ce qui élimine le besoin d'un URI de redirection.
Adresse IP de bouclage (macOS, Linux, bureau Windows)
Pour recevoir le code d'autorisation à l'aide de cette URL, votre application doit écouter sur le serveur Web local. Cette option est disponible sur de nombreuses plates-formes, mais pas toutes. Toutefois, si votre plate-forme le permet, il s'agit du mécanisme recommandé pour obtenir le code d'autorisation.
Lorsque votre application reçoit la réponse d'autorisation, elle doit, pour une meilleure convivialité, répondre en affichant une page HTML qui demande à l'utilisateur de fermer le navigateur et de revenir à votre application.
Utilisation recommandée | Applications de bureau macOS, Linux et Windows (mais pas celles de la plate-forme Windows universelle) |
Valeurs du formulaire | Définissez le type d'application sur Application de bureau. |
Copier/Coller manuel (obsolète)
Protéger vos applications
Valider la propriété de l'application (Android, Chrome)
Vous pouvez valider la propriété de votre application pour réduire le risque d'usurpation d'identité.
Android
Pour finaliser la procédure de validation, vous pouvez utiliser votre compte de développeur Google Play si vous en possédez un et si votre application est enregistrée dans la Google Play Console. Pour que la validation soit réussie, vous devez remplir les conditions suivantes :
- Vous devez disposer d'une application enregistrée dans la Google Play Console avec le même nom de package et la même empreinte de certificat de signature SHA-1 que le client OAuth Android pour lequel vous effectuez la validation.
- Vous devez disposer des droits d'administrateur pour l'application dans la console Google Play. En savoir plus sur la gestion des accès dans la Google Play Console
Dans la section Valider la propriété de l'application du client Android, cliquez sur le bouton Valider la propriété pour terminer le processus de validation.
Si la validation réussit, une notification s'affiche pour confirmer le succès de la procédure. Sinon, une invite d'erreur s'affiche.
Pour résoudre un problème de validation, procédez comme suit :
- Assurez-vous que l'application que vous validez est enregistrée dans la Google Play Console.
- Assurez-vous de disposer des droits d'administrateur pour l'application dans la Google Play Console.
Chrome
Pour finaliser la procédure de validation, vous devez utiliser votre compte de développeur Chrome Web Store. Pour que la validation soit effectuée, vous devez remplir les conditions suivantes :
- Vous devez avoir un élément enregistré dans le tableau de bord du développeur Chrome Web Store avec le même ID d'élément que le client OAuth de l'extension Chrome pour lequel vous effectuez la validation.
- Vous devez être l'éditeur de l'élément Chrome Web Store. En savoir plus sur la gestion des accès dans le tableau de bord du développeur Chrome Web Store
Dans la section Valider la propriété de l'application du client de l'extension Chrome, cliquez sur le bouton Valider la propriété pour terminer le processus de validation.
Remarque : Après avoir accordé l'accès à votre compte, patientez quelques minutes avant de terminer la procédure de validation.
Si la validation réussit, une notification s'affiche pour confirmer le succès de la procédure. Sinon, une invite d'erreur s'affiche.
Pour résoudre un problème de validation, procédez comme suit :
- Assurez-vous qu'un élément est enregistré dans le tableau de bord du développeur Chrome Web Store et qu'il possède le même ID d'élément que le client OAuth de l'extension Chrome pour lequel vous effectuez la validation.
- Assurez-vous d'être l'éditeur de l'application. Vous devez être l'éditeur individuel de l'application ou membre de son groupe d'éditeurs. En savoir plus sur la gestion des accès dans le tableau de bord du développeur du Chrome Web Store
- Si vous venez de mettre à jour votre liste d'éditeurs de groupe, vérifiez que la liste des membres du groupe d'éditeurs est synchronisée dans le tableau de bord du développeur Chrome Web Store. En savoir plus sur la synchronisation de votre liste des membres.
App Check (iOS uniquement)
La fonctionnalité App Check vous aide à protéger vos applications iOS contre toute utilisation non autorisée en utilisant le service App Attest d'Apple pour vérifier que les requêtes envoyées aux points de terminaison Google OAuth 2.0 proviennent de vos applications authentiques. Cela permet de réduire le risque d'usurpation d'identité d'application.
Activer App Check pour votre client iOS
Pour activer App Check pour votre client iOS, vous devez remplir les conditions suivantes :- Vous devez spécifier un ID d'équipe pour votre client iOS.
- Vous ne devez pas utiliser de caractère générique dans votre ID de bundle, car il peut correspondre à plusieurs applications. Cela signifie que l'ID de bundle ne doit pas inclure le symbole astérisque (*).
Après avoir activé App Check, vous verrez des métriques liées aux requêtes OAuth de votre client dans la vue "Modifier" du client OAuth. Les requêtes provenant de sources non validées ne seront pas bloquées tant que vous n'aurez pas appliqué App Check. Les informations de la page de surveillance des métriques peuvent vous aider à déterminer quand commencer à appliquer les règles.
Vous pouvez rencontrer des erreurs liées à la fonctionnalité App Check lorsque vous l'activez pour votre application iOS. Pour résoudre ces erreurs, procédez comme suit :
- Vérifiez que l'ID du bundle et l'ID d'équipe que vous avez spécifiés sont valides.
- Vérifiez que vous n'utilisez pas de caractère générique pour l'ID du bundle.
Appliquer App Check pour votre client iOS
L'activation d'App Check pour votre application ne bloque pas automatiquement les requêtes inconnues. Pour appliquer cette protection, accédez à la vue "Modifier" de votre client iOS. Vous y trouverez les métriques App Check à droite de la page, dans la section Identité Google pour iOS. Les métriques incluent les informations suivantes :- Nombre de requêtes validées : requêtes associées à un jeton App Check valide. Une fois que vous avez activé l'application App Check, seules les requêtes de cette catégorie aboutiront.
- Nombre de requêtes non validées : requêtes provenant probablement de clients obsolètes : requêtes non associées à un jeton App Check. Elles peuvent provenir d'une ancienne version de votre application qui n'inclut pas d'implémentation App Check.
- Nombre de requêtes non validées : requêtes d'origine inconnue : requêtes non associées à un jeton App Check, qui ne semblent pas provenir de votre application.
- Nombre de demandes non validées : demandes non valides : demandes associées à un jeton App Check non valide, qui peuvent provenir d'un client non authentique tentant de se faire passer pour votre application, ou d'environnements d'émulation.
Pour appliquer App Check, cliquez sur le bouton APPLIQUER et confirmez votre choix. Une fois l'application active, toutes les requêtes non validées de votre client seront refusées.
Remarque : Une fois que vous avez activé l'application, un délai de 15 minutes peut être nécessaire pour que les modifications soient prises en compte.
Désactiver App Check pour votre client iOS
Si vous désactivez App Check pour votre application, l'application cessera d'être appliquée et toutes les requêtes de votre client vers les points de terminaison Google OAuth 2.0 seront autorisées, y compris les requêtes non validées.
Pour désactiver App Check pour votre client iOS, accédez à la vue d'édition du client iOS, puis cliquez sur le bouton DÉSACTIVER et confirmez votre choix.
Remarque : Une fois App Check désactivé, un délai de 15 minutes peut être nécessaire pour que les modifications soient prises en compte.
Désactiver App Check pour votre client iOS
Si vous désactivez App Check pour votre application, toute la surveillance et l'application App Check seront arrêtées. Envisagez de ne pas appliquer App Check pour pouvoir continuer à surveiller les métriques de votre client.
Pour désactiver App Check pour votre client iOS, accédez à la vue d'édition du client iOS et désactivez le bouton bascule Protégez votre client OAuth des utilisations abusives avec Firebase App Check.
Remarque : Une fois App Check désactivé, un délai de 15 minutes peut être nécessaire pour que les modifications soient prises en compte.
Accès basé sur l'heure
L'accès limité dans le temps permet à un utilisateur d'accorder à votre application l'accès à ses données pour une durée limitée afin d'effectuer une action. L'accès limité dans le temps est disponible dans certains produits Google pendant le processus de consentement. Il permet aux utilisateurs d'accorder l'accès pour une durée limitée. L' API Data Portability, par exemple, permet un transfert unique de données.
Lorsqu'un utilisateur accorde à votre application un accès limité dans le temps, le jeton d'actualisation expire après la durée spécifiée. Notez que les jetons d'actualisation peuvent être invalidés plus tôt dans certaines circonstances. Pour en savoir plus, consultez ces cas. Dans ce cas, le champ refresh_token_expires_in
renvoyé dans la réponse d'échange du code d'autorisation représente le temps restant avant l'expiration du jeton d'actualisation.
Documentation complémentaire
La bonne pratique actuelle de l'IETF OAuth 2.0 pour les applications natives établit de nombreuses bonnes pratiques documentées ici.
Implémenter la protection multicompte
Pour protéger les comptes de vos utilisateurs, vous devez également implémenter la protection multi-comptes en utilisant le service de protection multi-comptes de Google. Ce service vous permet de vous abonner aux notifications d'événements de sécurité, qui fournissent à votre application des informations sur les modifications majeures apportées au compte utilisateur. Vous pouvez ensuite utiliser ces informations pour prendre des mesures en fonction de la manière dont vous décidez de répondre aux événements.
Voici quelques exemples de types d'événements envoyés à votre application par le service de protection multi-comptes de Google :
-
https://schemas.openid.net/secevent/risc/event-type/sessions-revoked
-
https://schemas.openid.net/secevent/oauth/event-type/token-revoked
-
https://schemas.openid.net/secevent/risc/event-type/account-disabled
Pour en savoir plus sur l'implémentation de la protection multicompte et obtenir la liste complète des événements disponibles, consultez la page Protéger les comptes utilisateur avec la protection multicompte .