Salut c'est Pierre !
Alors petite vidéo parce qu'on m'a demandé plusieurs fois sur divers discords :
Comment on crée des accès pour avoir accès à... notamment à l'API Youtube, mais notamment à d'autres API Google ?
Donc je vais vous montrer comment je fais.
Donc déjà je vais sur une page qui s'appelle "console.cloud.google.com".
Et ensuite je me connecte avec le compte en question sur lequel je veux me connecter à l'API.
Et ensuite, ici, on a un onglet où on a ici nos projets.
Donc moi j'en ai déjà créé un qu'on (que l'on) voit ici.
Et euh... Mais si jamais, vous, dans votre cas j'imagine nous avez pas de projet,
vous avez un bouton "new project" en haut; ici, pour créer un projet.
Une fois que le projet est créé, on est censé arriver sur cette page.
Si jamais ce n'est pas le cas, en haut à gauche vous avez un menu, et vous avez un lien "API & Services", qui est quelque part du coup dans le menu.
Et je vous invite à cliquer sur le petit lien "pin" qui permet de l'avoir tout en haut.
Au moins vous pouvez le retrouver facilement.
Donc là, je vais dans "API & Services", et je suis ici.
Donc la première chose que je vais faire, c'est que je vais dans le "OAuth consent screen".
Et je vais... euh... il me demande quel type d'utilisateur je veux mettre.
Je vais mettre "external", je vais faire "create".
Ensuite c'est une habitude que j'ai pris, mais je sais pas si elle est nécessaire toujours aujourd'hui. Donc je vous invite à tester sans.
C'est... vous voyez le... le... moi ce que je voulais cocher à la base c'était le "internal".
Mais le "internal"... mais le "user internal", il est grisé. Je peux pas le cocher.
Donc, ce que je fais à la place, c'est que je remplace le "false" dans l'url par un "true".
Et.. euh... et voilà ! Et donc ça change...
Je sais pas si ça change encore quelque chose aujourd'hui,
mais je sais qu'à l'époque j'avais besoin de le faire les premières fois pour que ça puisse marcher correctement.
Donc voilà. Donc que...
Je vous invite à tester sans si vous avez envie, si jamais on n'a... si jamais peut-être on n'a plus besoin de le faire.
Donc "app name", bah je vais lui donner un nom, que le je ne vais vais pas vous révéler.
Euh... mon "support email"... pareil, je mettrai un mail que je ne vais pas vous révéler.
Je dois mettre un email...
qui est un email, que là aussi, je ne vais pas vous révéler.
Donc "save and continue".
Alors là, ici, il y a des "scopes".
C'est les droits d'accès qu'on veut... Euhm... donner à notre clé API.
Mais moi je ne passe pas par ce système là pour donner mes droits d'accès.
Je le passe par un autre système.
Parce qu'en fait l'API de goog... de... uhm... de youtube, donc de google de manière générale,
a besoin de vérifications pour avoir accès à certaines choses.
Sauf que moi, du coup, je ne passe pas par ce truc-là, je passe par le playground.
Et je vais vous expliquer juste après.
Donc je fais "save and continue".
Donc là, il me répète toutes les informations que je vais vous masquer.
Tac ! Et une fois que ça c'est bon, ensuite je vais aller me créer des "credentials".
Mais avant de me créer des "credentials", il va falloir que je donne des accès à l'API.
Donc, moi, dans mon cas, l'API que (à laquelle) je veux donner accès, c'est l'API Youtube.
Et, donc moi, c'est la "Youtube Data API v3". C'est celle-là que je veux dans mon cas.
Vu que c'est une euh... C'est une API qui permet de récupérer des informations sur youtube,
de poster des vidéos sur Youtube, et d'autres choses.
Donc là je clique sur le petit bouton "enable".
Maintenant je vais, du coup, dans "credentials", parce que je vais devoir me créer des identifiants.
Je vais m'ouvrir un "notepad" (bloc-note), parce qu'il va falloir noter les identifiants.
Donc, je vous invite à le faire vous aussi.
Donc je clique sur "create credentials".
Moi, ce que j'ai besoin dans mon cas de figure, c'est un "OAuth client ID"
Euh... si vous utilisez le "API key", vous aurez des routes de l'API qui ne fonctionneront pas,
car elles auront besoin de forcément d'un... d'utiliser un... un "OAuth client ID".
Donc j'utilise ça.
Donc "application type", euh... dans... de ce que j'ai remarqué, ça change pas grand chose.
Euh...peu importe ce qu'on met, donc moi je mets "web application".
Donc là, ben... on peut lui donner le nom qu'on veut.
Moi je lui mettre un nom que je ne vais pas vous révéler. Hop !
Ensuite... euh... les "origines javascript", j'ai pas besoin d'y toucher.
Par contre, moi, ce que j'ai besoin de toucher, c'est les "redirections d'url".
Alors moi, il se trouve que j'ai un petit lien ici, le "Google Playground", que j'ai sauvegardé.
Que je vous mettrai aussi dans la description.
Ce que je fais, c'est que dans le doute, je le mets en deux fois ce lien.
Je le mets une fois sans le slash, et une fois avec le slash.
Au moins ça m'évite les soucis de... de si je dois m'emmerder avec un slash ou pas.
Et là je clique sur "créer".
Et là, il va me donner mon "Client ID", et mon "Client Secret", que là non plus je ne vais pas vous révéler.
Mais je vous invite à les copier coller tous les deux parce qu'on va en avoir besoin juste après.
Donc là j'ai mon "Client ID" et mon "Client Secret".
Donc, jusque là, normalement, tout est bon.
Et maintenant, ce qu'il va nous falloir, en fait, c'est récupérer un "Refresh Token".
Parce que... j'utilise un Client OAuth 2.
Je vous invite à vous renseigner sur le... comment fonctionne OAuth 2.
Mais pour faire simple, on a un premier token, qu'on va générer, qui est un refresh token,
qui, dans le cadre de l'API de Google n'expire jamais.
Et une fois qu'on a ce refresh token, on pourra générer des tokens
qui nous donneront accès à l'API pendant un certain temps.
Donc le but, en fait, c'est qu'à chaque fois qu'on aura besoin de l'API Google,
on fera un appel, du coup, à l'API google qui va nous permettre de récupérer un token via le refresh token.
Et ensuite on utilisera ce nouveau token pour utiliser... ben... l'API Google.
Donc pour faire ça, je vais aller sur le "playground", donc là où j'étais il y a deux secondes.
Et là, on va aller, ici, sur la petite euh... sur le petit euh...
Comment ça s'appelle ? La "roue dentée" ? Je sais plus le nom.
Et, en bas, on a un truc "use your own OAuth credentials".
Et là, je vais copier coller le "Client ID" et le "Client Secret", que je vous ai demandé de le copier juste avant.
Donc là, je viens de les mettre, je fais "close".
Ensuite, ici, je vais tout en bas, pour chercher "l'API Youtube v3".
Alors, par contre, (ne) vous faites pas avoir par ce champ texte, ici.
Ce n'est pas un champ de recherche. Parce que moi aussi je me suis fait avoir.
Et ben... dans mon cas, ce que j'ai besoin, j'ai besoin du "auth", du "readonly", et de l' "upload".
C'est les 3 qui m'intéressent.
Et... je vais lui dire d'autoriser.
D'ailleurs, je crois que je n'ai même pas besoin de l' "upload".
Ensuite, je vais me connecter à mon compte, que je ne vais pas vous révéler.
Donc là, il trouve que j'ai un "access denied".
Il me dit que mon appli n'a pas été autorisée par le développeur.
Et ça, c'est sûrement,
parce que j'ai fait la bêtise de ne pas mettre mon appli en production.
Et donc, la chose que j'ai oubliée de faire, c'est qu'il faut retourner sur le "OAuth consent screen",
et il faut cliquer sur le bouton "publish", et lui dire "confirmer".
Et donc, là, il me dit que la vérification n'est pas requise.
Pour info la vérification n'est pas requise parce que je n'ai coché aucun "scope" dans euh... ben... dans la page précédente du "consent screen".
Et, du coup, je gère tout avec le "playground".
Donc là, du coup, je vais recommencer ce que je fais (j'ai fait) avec le "playground".
Donc on retourne dans la petite roue crantée.
Je mets... du coup... mon... mon "API key", fin plutôt mon "Client ID", et mon "Client Secret".
Je ferme ça. Je retourne chercher "Youtube Data API v3".
Je mets le "auth", le "readonly".
D'ailleurs j'ai pas besoin de l' "upload". Mais bon, tant qu'à faire, autant le mettre.
Je vais me connecter avec mon compte.
Là, ici, il me dit : "Attention google n'a pas vérifié ton app".
Donc là on va dans "avancé",
et on clique sur ce tout petit bouton, qu'ils mettent de plus en plus petit.
Avant dans ces interfaces, il était plus visible que ça,
donc j'ai l'impression qu'ils ont vraiment pas envie, Google, qu'on fasse ça.
Et donc là on lui dit "Ok. Fais-le quand même même si c'est pas safe".
Donc là on peut lui cocher... de... tout ce qu'on a déjà autorisé.
On lui dit : "Ok. Je suis d'accord pour que tu l'autorises".
Et voilà ! Et là on récupère un "authorization code".
Et ensuite on clique ici, sur "exchange authorization code for token".
Et là on récupère un refresh token, qui est ici.
Et donc, ce refresh token, vous le gardez.
C'est votre troisième information importante.
Ensuite, une fois que vous avez ces trois informations importantes,
et ben vous pouvez utiliser ce token pour... se... vous connecter, du coup... via... à l'API de Google et récupérer un access token.
Pour ceux que ça intéresse, j'ai fait une implémentation en PHP.
Qui s'appelle un... C'est "AccessTokenProvider", ici, sur "php-google-api... [blablabla]".
Elle (la bibliothèque) est sur packagist d'ailleurs.
Euh... je... Vous pouvez peut-être la retrouver sur packagist, ici, là, via la commande "composer require".
Je vous mettrai un lien dans la description si ça vous intéresse.
Et, ça permet, en fait, en utilisant... du coup... l' "ID", le "Secret" et le "refresh token", de récupérer l' "access token".
Donc, si vous voulez voir, c'est simplement une commande curl qui va directement se connecter à l'API de Google.
Donc, via... du coup... la partie OAuth de l'API de Google, qui sert justement à la connexion.
Et on peut récupérer un "access token".
Une fois qu'on a cet access token, on peut utiliser, du coup, toutes les autres routes de l'API de Google qui ont besoin, du coup, de cet access token.
Bon bah voilà, c'est tout pour moi !
Si vous avez la moindre question, n'hésitez pas à la poster en commentaire.
Si la vidéo vous a plu, merci laisser un pouce bleu. Ça m'aide pour l'algo Youtube, tout ça, tout ça.
Et c'était Pierre ! Et je vous dis "À la prochaine !"
[Musique de fin] Source : https://www.youtube.com/watch?v=-X4CSkELg78 (Short version)