|
Connexion Google OAuth2 et Renouvellement du Token |
Iniciado por Damien R., mai., 11 2022 3:47 PM - 20 respostas |
| |
| | | |
|
| |
Membro registado 2 mensagems |
|
Publicado em maio, 11 2022 - 3:47 PM |
Bonjour à tous,
Avec le futur changement fin mai, je dois passer ma petit app d'envoi de mail en OAuth2 pour google. Cette appli windows envoi aussi des mails en smtp pour d'autres comptes (ovh, 1and, orange etc...). J'ai repris le code du webinaire récent.
Tout fonctionne bien, ou presque.
Le Token ne veut pas se renouveler. La propriété Actualisation du token étant vide, cela indique qu'il ne peut être renouveler. Et si j'essaie, il est non valide et donc je dois en récup un nouveau. Résultat, toutes les heures, on doit donc demander un nouveau token.
Je précise qu'actuellement l'application sur la console google est en Test, nous avons décidé de ne pas publier car nous avons très peu de client avec un compte google pour l'envoi de mail, et que l'appli est en fin de vie (le process de validation parait fastidieux)
Le code de la procédure de connexion que j'utilise :
Procedure ConnexionOAuth2(sAdresseEmail est une chaîne):booléen
bufToken est un Buffer gsSessionOAuth = fRepExe() + fSep() + "OAuth2_" + sAdresseEmail + ".bin"
EmailOAuth est un OAuth2Paramètres EmailOAuth.ClientID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com" EmailOAuth.ClientSecret = "xxxxxxxxxxxxxxxxxxxxxxxxx" EmailOAuth.URLAuth = "https://accounts.google.com/o/oauth2/v2/auth" EmailOAuth.URLToken = "https://accounts.google.com/o/oauth2/token" EmailOAuth.Scope = "https://www.googleapis.com/auth/userinfo.email" + " " + "https://www.googleapis.com/auth/gmail.send" EmailOAuth.URLRedirection = "http://localhost:9000"
SI fFichierExiste(gsSessionOAuth) ALORS QUAND EXCEPTION DANS bufToken = fChargeBuffer(gsSessionOAuth) Désérialise(gStToken,bufToken,psdBinaire) FAIRE SINON SI gStToken.DateExpiration-1Min < DateHeureSys() _ET_ gStToken.Actualisation <> "" ALORS gStToken = gStToken.RenouvelleToken() SI gStToken.Valide ALORS SauveToken() SINON FIN FIN FIN FIN
SI PAS gStToken.Valide ALORS fSupprime(gsSessionOAuth) Info("Votre navigateur va s'ouvrir pour vous connecter à votre compte Google","Une fois la connexion effectuée, vous devrez cocher le service <Envoyer des e-mails en votre nom.>") gStToken = AuthIdentifie(EmailOAuth) SI gStToken.Valide ALORS SauveToken() FIN FIN
PROCEDURE INTERNE SauveToken() Sérialise(gStToken,bufToken,psdBinaire) fSauveBuffer(gsSessionOAuth,bufToken) FIN
RENVOYER gStToken.Valide |
| |
| |
| | | |
|
| | |
| |
Membro registado 88 mensagems Popularité : +2 (2 votes) |
|
Publicado em maio, 13 2022 - 10:00 AM |
Bonjour, Je suis également concerné par ce changement d'accès à Google, et vais devoir implémenter cette authentification Google. Où avez vous trouvé le code du Webinar ? Je suis abonné à la LST mais je ne trouver rien. Cordialement,
-- Olivier Heckel |
| |
| |
| | | |
|
| | |
| |
Publicado em maio, 13 2022 - 10:27 AM |
| |
| |
| | | |
|
| | |
| |
Membro registado 2 mensagems |
|
Publicado em maio, 13 2022 - 11:25 AM |
Bonjour, J'ai enlevé le test sur la propriété actualisation du token, parfois ca rafraichit le token, parfois erreur. Bon dans le cas d'une erreur, je supprime le token et le client se reconnecte, mais c'est ennuyeux il doit se reconnecter régulièrement. |
| |
| |
| | | |
|
| | |
| |
Membro registado 88 mensagems Popularité : +2 (2 votes) |
|
Publicado em maio, 13 2022 - 1:24 PM |
Merci pour l'information. Cordialement,
-- Olivier Heckel |
| |
| |
| | | |
|
| | |
| |
Membro registado 88 mensagems Popularité : +2 (2 votes) |
|
Publicado em maio, 13 2022 - 2:30 PM |
Bon pour l'authentification OAuth, cela fonctionne, et je récupère un token (gstToken ci-dessous). La suite du code, c'est l'ouverture d'une session SMTP et la création du mail à envoyer. j'ai donc le code ci-dessous :
MAsessionSMTP est un emailSessionSMTP MAsessionSMTP.AdresseServeur = "smtp.gmail.com" MAsessionSMTP.Nom = "nom@gmail.com" MAsessionSMTP.MotDePasse = "mot de passe" MAsessionSMTP.Port = 587 MAsessionSMTP.Option = emailOptionSécuriséTLS MAsessionSMTP.AuthToken = gstToken
SI EmailOuvreSession(MAsessionSMTP) = FAUX ALORS Erreur("Impossible d'ouvrir la session SMTP.", ErreurInfo(),"En cas de TimeOut, assurez-vous des paramètres du pare-Feu sur le port utilisé (" + ... MAsessionSMTP.Port + ")") RETOUR FIN
Le programme se bloque sur la fonction EmailOuvreSession, et plus rien.
Qu'ai-je oublié ? ou mal fait ?
-- Olivier Heckel |
| |
| |
| | | |
|
| | |
| |
Membro registado 98 mensagems Popularité : +2 (2 votes) |
|
Publicado em maio, 25 2022 - 5:59 PM |
Bonjour, Je suis dans le même cas qu'Olivier... J'ai le message d'erreur 'Impossible ouvrir le SMTP...' Voici mon code... Merci de m'indiquer ou cela pêche!!!
sGmailPersistantOauth est une chaîne = fRepDonnées()+[fSep]+"AuthSession_G.bin" MaOauth2_G est un OAuth2Paramètres MaOauth2_G.ClientID = "1111111111111-3qcns85mmlop8qhtcon806fbjlmpv8.apps.googleusercontent.com" MaOauth2_G.ClientSecret = "xxxxxxx-8BLuuytHwgoV1Yg" MaOauth2_G.URLAuth = "https://accounts.google.com/o/oauth2/v2/auth" MaOauth2_G.URLToken = "https://accounts.google.com/o/oauth2/token" MaOauth2_G.Scope = "https://www.googleapis.com/auth/gmail.send" MaOauth2_G.URLRedirection = "http://localhost:9000" MaOauth2_G.TypeRéponse = oauth2TypeRéponseCode Token_G=AuthIdentifie(MaOauth2_G) SI Token_G.Valide ALORS ToastAffiche(("La connexion OAuth2 est valide")) SINON Erreur("Echec de connexion à l'OAuth2") FIN SI fFichierExiste(sGmailPersistantOauth) ALORS QUAND EXCEPTION DANS bufToken = fChargeBuffer(sGmailPersistantOauth) Désérialise(Token_G,bufToken,psdBinaire) FAIRE SINON SI (Token_G.DateExpiration-1Min <DateHeureSys()) _ET_ Token_G.Actualisation<>"" ALORS Token_G = Token_G.RenouvelleToken() SI Token_G.Valide ALORS Sérialise(Token_G,bufToken,psdBinaire) SINON FIN FIN FIN FIN SI PAS Token_G.Valide ALORS Token_G = AuthIdentifie(MaOauth2_G) SI Token_G.Valide ALORS Sérialise(Token_G,bufToken,psdBinaire) fSauveBuffer(sGmailPersistantOauth, bufToken) FIN FIN MaSession.AdresseServeur = "smtp.gmail.com" MaSession.Nom = ADRESSE_MEL MaSession.MotDePasse = MDP_MEL MaSession.Port = 587 MaSession.Option = emailOptionSécuriséTLS MaSession.AuthToken = Token_G SI MaSession.AuthToken <> Null ALORS SI EmailOuvreSession(MaSession) = FAUX ALORS Erreur("Impossible d'ouvrir la session SMTP.", ErreurInfo(), ... "En cas de TimeOut, assurez-vous des paramètres du " + ... """Pare-Feu"" sur le port utilisé (" + ... MaSession.Port + ")") RETOUR FIN FIN FIN
Quelqu'un a-t-il un code qui fonctionne avec l'authentification Oauth2 imposé par Google dès la semaine prochaine ? D'avance merci de votre aide
-- Patrick PELISSON |
| |
| |
| | | |
|
| | |
| |
Publicado em maio, 27 2022 - 9:18 AM |
| |
| |
| | | |
|
| | |
| |
Publicado em maio, 30 2022 - 12:13 PM |
De ce que j'ai compris le scope "https://mail.google.com" (qui donne un accès complet à la boite gmail) est largement plus sensible que "https://www.googleapis.com/auth/gmail.send" (qui ne permet que l'envoi de nouveaux mails) du point de vue de google .
Dans tous les cas une validation de l'application doit être réalisée auprès de google (le truc casse pied...).
J'ai fait une remonté ref 672427 auprès du support pour le cas de la connexion au stmp qui ne fonctionne pas avec un scope plus restreint que "https://mail.google.com". Si voulez l'appuyer de votre côté. Dans tous les cas plus le scope est restreint plus la validation de l'application sera aisée...
eric l.
> Le 27/05/2022 à 07:18, Adrien a écrit :
|
| |
| |
| | | |
|
| | |
| |
Membro registado 98 mensagems Popularité : +2 (2 votes) |
|
Publicado em junho, 01 2022 - 10:54 AM |
Bonjour,
Voici le code qui se trouve dans le bouton [envoyer] de ma fenêtre Email. Cela fonctionne et ne redemande pas systématiquement un reconnexion à la fenêtre authentification de Gmail . Cela ne vous empêchera pas de faire valider votre application par Google... alors bon courage et pas mal de patience.
SI gnFlag_Gmail=1 ALORS
sGmailPersistantOauth est une chaîne = fRepDonnées()+[fSep]+"AuthSession_G.bin" bufToken est un Buffer MaOauth2_G est un OAuth2Paramètres
SI fFichierExiste(sGmailPersistantOauth) = VRAI ALORS bufToken = fChargeBuffer(sGmailPersistantOauth) Désérialise(Token_G,bufToken,psdBinaire) SI (Token_G.DateExpiration-1Min <DateHeureSys()) _ET_ Token_G.Actualisation<>"" ALORS Token_G = Token_G.RenouvelleToken() SI Token_G.Valide ALORS Sérialise(Token_G,bufToken,psdBinaire) fSauveBuffer(sGmailPersistantOauth, bufToken) FIN SINON MaOauth2_G.ClientID = "1111-3qcnspmjf5gkql8qhtcon806fbjlmpv8.apps.googleusercontent.com" MaOauth2_G.ClientSecret = "xxxxx-8BLuuytHwgoV1Yg" MaOauth2_G.URLAuth = "https://accounts.google.com/o/oauth2/v2/auth" MaOauth2_G.URLToken = "https://accounts.google.com/o/oauth2/token" MaOauth2_G.Scope = "https://mail.google.com" MaOauth2_G.URLRedirection = "http://localhost:9000" MaOauth2_G.TypeRéponse = oauth2TypeRéponseCode Token_G = AuthIdentifie(MaOauth2_G) SI Token_G.Valide ALORS Sérialise(Token_G,bufToken,psdBinaire) fSauveBuffer(sGmailPersistantOauth, bufToken) SINON Erreur("Échec de connexion à l'OAuth2") FIN FIN FIN
MaSession est un emailSessionSMTP i est un entier AdresseTemp est une chaîne clEmail est un Email EmailParamètre(emailParamètreMode, 1)
SI OBJET_MEL = "" ALORS Info("L'objet de cet Email est absent...") RepriseSaisie(OBJET_MEL) FIN
clEmail.AdresseExpéditeur = ADRESSE_MEL clEmail.Expediteur = ADRESSE_MEL Ajoute(clEmail.Destinataire, DESTINATAIRE) clEmail.Sujet = OBJET_MEL clEmail.Message = MESSAGE_MEL clEmail.ConfirmationLecture = AR_EMAIL
i = 1 BOUCLE AdresseTemp = ExtraitChaîne(COPIE,i,";") SI AdresseTemp <> EOT ALORS Ajoute(clEmail.Cc,AdresseTemp) i++ SINON SORTIR FIN FIN
MaSession..AdresseServeur = SERVEUR_SMTP SI SESSION_MEL=0 ALORS MaSession..Option = optionSSL SINON MaSession..Option = emailOptionSécuriséTLS FIN MaSession..Port = PORT_MEL MaSession..Nom = ADRESSE_MEL MaSession..MotDePasse = MDP_MEL SI gnFlag_Gmail=1 ALORS MaSession.AuthToken = Token_G
EmailChangeTimeOut(10)
TEST_NBRE est un entier = TABLE_ATTACH..Occurrence SI TEST_NBRE>0 ALORS POUR i = 1 _À_ TABLE_ATTACH..Occurrence EmailChargeFichierAttaché(clEmail,TABLE_ATTACH.CHEMIN1[i]) FIN FIN
ToastAffiche("Envoi de l'Email en cours",toastLong,cvMilieu,chCentre,BleuPastel)
SI EmailOuvreSession(MaSession) ALORS SI EmailEnvoieMessage(MaSession,clEmail) ALORS ToastSupprimeTout() ToastAffiche("Votre Email a été envoyé avec succès, vous pouvez fermer la fenêtre.",toastLong,cvMilieu,chCentre,VertPastel) FIN SINON Erreur("Échec dans l'envoi de cet Email") FIN ToastSupprimeTout() Ferme(FEN_IMel_1,VRAI)
-- Patrick PELISSON |
| |
| |
| | | |
|
| | |
| |
Membro registado 98 mensagems Popularité : +2 (2 votes) |
|
Publicado em junho, 01 2022 - 11:01 AM |
RE,
Une petite précision sur le code du précédent message... Token_G est un AuthToken est déclaré dans le code du projet, à l'initialisation car j'ai plusieurs fenêtres du projet qui envoient des Mail. Si vous n'avez qu'une fenêtre d'envoi d'Email, vous pouvez le déclarer en début du code sous le bufToken... A+
-- Patrick PELISSON |
| |
| |
| | | |
|
| | |
| |
Publicado em junho, 01 2022 - 1:24 PM |
De votre expérience la validation de votre application auprès de google a-t-elle été compliquée ?
merci
eric l.
> Le 01/06/2022 à 08:54, Patrick PELISSON a écrit :
Bonjour, Voici le code qui se trouve dans le bouton [envoyer] de ma fenêtre Email. Cela fonctionne et ne redemande pas systématiquement un reconnexion à la fenêtre authentification de Gmail . Cela ne vous empêchera pas de faire valider votre application par Google... alors bon courage et pas mal de patience. // ============================================================================
SI gnFlag_Gmail=1 ALORS // Présence d'une adresse Gmail alors procédure OAuth2 //------------------------------------------------------------------------------
sGmailPersistantOauth est une chaîne = fRepDonnées()+[fSep]+"AuthSession_G.bin" bufToken est un Buffer MaOauth2_G est un OAuth2Paramètres // Service Oauth
// Token_G est existant SI fFichierExiste(sGmailPersistantOauth) = Vrai ALORS //QUAND EXCEPTION DANS bufToken = fChargeBuffer(sGmailPersistantOauth) Désérialise(Token_G,bufToken,psdBinaire) SI (Token_G.DateExpiration-1min Token_G.Actualisation<>"" ALORS Token_G = Token_G.RenouvelleToken() // Enregistrement de l'Oauth2 si valide SI Token_G.Valide ALORS Sérialise(Token_G,bufToken,psdBinaire) fSauveBuffer(sGmailPersistantOauth, bufToken) FIN SINON // Fichier inexistant alors on connecte à la page d'identification de Gmail... MaOauth2_G.ClientID = "1111-3qcnspmjf5gkql8qhtcon806fbjlmpv8.apps.googleusercontent.com" MaOauth2_G.ClientSecret = "xxxxx-8BLuuytHwgoV1Yg" MaOauth2_G.URLAuth = "https://accounts.google.com/o/oauth2/v2/auth" MaOauth2_G.URLToken = "https://accounts.google.com/o/oauth2/token" MaOauth2_G.Scope = "https://mail.google.com"//"https://www.googleapis.com/auth/gmail.send" MaOauth2_G.URLRedirection = "http://localhost:9000" MaOauth2_G.TypeRéponse = oauth2TypeRéponseCode Token_G = AuthIdentifie(MaOauth2_G) // Enregistrement de l'Oauth2 si valide SI Token_G.Valide ALORS Sérialise(Token_G,bufToken,psdBinaire) fSauveBuffer(sGmailPersistantOauth, bufToken) SINON Erreur("Échec de connexion à l'OAuth2") FIN FIN FIN //------------------------------------------------------- Fin de la gestion OAuth2 pour Gmail
MaSession est un emailSessionSMTP i est un entier AdresseTemp est une chaîne clEmail est un Email EmailParamètre(emailParamètreMode, 1)
// Vérification de la présence d'un objet pour cet Email SI OBJET_MEL = "" ALORS Info("L'objet de cet Email est absent...") RepriseSaisie(OBJET_MEL) FIN
//Affectations des variables d'envoi d'eMail : clEmail.AdresseExpéditeur = ADRESSE_MEL clEmail.Expediteur = ADRESSE_MEL Ajoute(clEmail.Destinataire, DESTINATAIRE) clEmail.Sujet = OBJET_MEL clEmail.Message = MESSAGE_MEL clEmail.ConfirmationLecture = AR_EMAIL
//Traitement des CC i = 1 BOUCLE AdresseTemp = ExtraitChaîne(COPIE,i,";") SI AdresseTemp <> EOT ALORS Ajoute(clEmail.Cc,AdresseTemp) i++ SINON SORTIR FIN FIN
// Ouverture d'une session SMTP sécurisée MaSession..AdresseServeur = SERVEUR_SMTP SI SESSION_MEL=0 ALORS MaSession..Option = optionSSL SINON MaSession..Option = emailOptionSécuriséTLS FIN MaSession..Port = PORT_MEL//iNUM_TLS MaSession..Nom = ADRESSE_MEL MaSession..MotDePasse = MDP_MEL//PASSE_MAIL SI gnFlag_Gmail=1 ALORS MaSession.AuthToken = Token_G //AuthIdentifie(MaOauth2_G) // 10 secondes pour le time out EmailChangeTimeOut(10) //Traitement des pièces jointes TEST_NBRE est un entier = TABLE_ATTACH..Occurrence SI TEST_NBRE>0 ALORS POUR i = 1 _À_ TABLE_ATTACH..Occurrence EmailChargeFichierAttaché(clEmail,TABLE_ATTACH.CHEMIN1[i]) FIN FIN
ToastAffiche("Envoi de l'Email en cours",toastLong,cvMilieu,chCentre,BleuPastel) //Ouverture de session SMTP SI EmailOuvreSession(MaSession) ALORS //Envoi du message. SI EmailEnvoieMessage(MaSession,clEmail) ALORS ToastSupprimeTout() ToastAffiche("Votre Email a été envoyé avec succès, vous pouvez fermer la fenêtre.",toastLong,cvMilieu,chCentre,VertPastel) FIN SINON Erreur("Échec dans l'envoi de cet Email") FIN ToastSupprimeTout() Ferme(FEN_IMel_1,Vrai) -- Patrick PELISSON |
| |
| |
| | | |
|
| | |
| |
Membro registado 98 mensagems Popularité : +2 (2 votes) |
|
Publicado em junho, 01 2022 - 3:46 PM |
Bonjour Eric,
Mon Appli à été validée par Google pour une synchronisation avec Google Calendar. Ils m'ont demandé une vidéo du cheminement dans mon appli, de son ouverture à la synchronisation des calendriers. Pénible pour 2 raisons : - Il faut tout documenter en anglais... - Ils réclament souvent des précisions sur l'accès Https utilisé alors même que mon appli tourne en local (5 A/R avant qu'ils le comprennent) Par contre, une fois le dossier d'habilitation engagée, ils répondent rapidement.
Je vais engager la procédure pour Gmail mais j'hésite de le faire dès maintenant car je n'ai besoin que du 'Send' et le Scope actuel de WD27 ne fonctionne qu'avec Gmail complet. Je vais attendre quelques jour pour voir si un correctif est réalisé par PCSoft.
-- Patrick PELISSON |
| |
| |
| | | |
|
| | |
| |
Publicado em junho, 02 2022 - 10:16 AM |
Nous sommes exactement dans le meme cas que toi. Validation ok pour calendar de longue date et le scope en cours pour gmail me refroidit, la doc de google est plutôt claire, on est dans un niveau d'accès "Restricted" qui demande une validation "poussée" (au lieu d'un niveau d'accès "Sensitive")... Je n'ai pas trop envie de me tirer une balle dans le pied ^^
Merci pour le retour
eric l.
> Le 01/06/2022 à 13:46, Patrick PELISSON a écrit :
Bonjour Eric, Mon Appli à été validée par Google pour une synchronisation avec Google Calendar. Ils m'ont demandé une vidéo du cheminement dans mon appli, de son ouverture à la synchronisation des calendriers. Pénible pour 2 raisons : - Il faut tout documenter en anglais... - Ils réclament souvent des précisions sur l'accès Https utilisé alors même que mon appli tourne en local (5 A/R avant qu'ils le comprennent) Par contre, une fois le dossier d'habilitation engagée, ils répondent rapidement. Je vais engager la procédure pour Gmail mais j'hésite de le faire dès maintenant car je n'ai besoin que du 'Send' et le Scope actuel de WD27 ne fonctionne qu'avec Gmail complet. Je vais attendre quelques jour pour voir si un correctif est réalisé par PCSoft. -- Patrick PELISSON |
| |
| |
| | | |
|
| | |
| |
Membro registado 98 mensagems Popularité : +2 (2 votes) |
|
Publicado em junho, 07 2022 - 4:40 PM |
Bonjour Eric,
Je penses avoir trouver une solution alternative... Les utilisateurs de mon application qui ont une adresse Gmail vont devoir remplacer leur mot de passe personnel pour leur adresse Gmail par un mot de passe généré par Google (Mot de passe d'une application) qui s'obtient très facilement depuis la page sécurité du compte Google. Rien à modifier dans mon code, c'est à l'utilisateur de générer son mot de passe de l'application et de le substituer à son mot de passe Gmail dans mon appli... Un tuto en ligne est très bien dans un autre sujet similaire...
-- Patrick PELISSON |
| |
| |
| | | |
|
| | |
| |
Publicado em junho, 07 2022 - 5:57 PM |
Bonjour
Pouvez-vous nous donner le lien vers ce tuto ? J'ai le même soucis avec mes applications
Merci beaucoup ! |
| |
| |
| | | |
|
| | |
| |
Membro registado 98 mensagems Popularité : +2 (2 votes) |
|
Publicado em junho, 07 2022 - 10:33 PM |
Voici l'adresse du tuto...
Cela fonctionne super et l'obtention de ce mot de passe 'application' est très facile à obtenir pour les utilisateurs... Dans ce forum, le sujet est : 'Envoie emails smpt' Cordialement
-- Patrick PELISSON |
| |
| |
| | | |
|
| | |
| |
Publicado em junho, 08 2022 - 1:57 PM |
+1 nous avons fait de même sur nos applications.... et avec une incitation à passer sur une adresse email pro (domaine ou fournisseur respectueux des standards).
Par contre j'en profite, est ce que l’accès OAUTH2 est vraiment gratuit ? il me semble qu'il y a une limite d'utilisateur. Source : https://www.pmail.com/devnews.htm |
| |
| |
| | | |
|
| | |
| |
Membro registado 98 mensagems Popularité : +2 (2 votes) |
|
Publicado em junho, 08 2022 - 10:19 PM |
Je pense que pour Google, il est gratuit mais limité à 100 connexions d'adresses Gmail différentes tant que l'application n'a pas été 'homologuée' par Google... Tant que cela fonctionne, le principe du mot de passe 'Application' délivré par Google et qui vient se substituer au mot de passe de l'utilisateur est la solution la plus facile à mettre en place !
-- Patrick PELISSON |
| |
| |
| | | |
|
| | |
| |
Publicado em novembro, 23 2022 - 11:39 AM |
Bonjour j'ai réussi à faire fonctionner avec Gmail la double authentification avec le mot de passe application de Google pour l'envoi de mail. du coup, j'ai une page web avec mon compte gmail qui me demande mon mot de passe afin de certifier que je suis bien l'expéditeur du message. Ok ma question est : comment faire de même lors d'un appel à un web service car le mail expéditeur du mail ne sera quant à lui pas connecté au moment de l'appel à ce service ? Merci |
| |
| |
| | | |
|
| | |
| |
Membro registado 9 mensagems Popularité : +1 (1 vote) |
|
Publicado em setembro, 27 2023 - 4:21 AM |
Salut Damien,
Dans la variable OAuth2Params est un Oauth, ajoute
OAuth2Params.ParamètresSupplémentaires = "access_type=offline"
Cela te retournera un jeton d'actualisation dans ta variable
MonToken.actualisation
PS : Tu peux aussi vérifier, avant toute intervention, si ton token est toujours opérationnel en cas de révocation de l'utilisateur depuis son compte Google : https://www.googleapis.com/oauth2/v1/tokeninfo…
Je pense qu'il y a moyen d'utiliser les fonctions Google de webdev (ex: GglListeAgenda ect..) par la suite, mais j'suis encore de potasser le truc. |
| |
| |
| | | |
|
| | | | |
| | |
|