Avec l'ancien google openid, lorsque j'envoyais un utilisateur (qui avait précédemment adhéré à mon application) à l'URL d'authentification, il les redirigeait immédiatement vers mon application.
Maintenant, avec OAuth2, l'URL d'authentification continue de demander à l'utilisateur l'autorisation. J'ai lu quelques-uns des docs sur ce sujet, mais ce que je ne comprends pas, c'est comment ce flux est supposé fonctionner:
Je pense que cela a quelque chose à voir avec le stockage du jeton d'authentification ou du jeton d'actualisation à l'étape 1, mais à l'étape 3, je ne sais pas qui ils sont. jeton d'accès.
Dans mes tests, lorsque je les envoie à l'URL d'authentification d'origine à l'étape 1, des autorisations leur sont à nouveau demandées.
EDIT: Trouvé la solution
Le google-api met "assessment_Prompt = force" par défaut lors de la création de l'URL d'authentification.
Oui, comme vous l'avez noté à l'aide du paramètre URL approbation_prompt = force forcera l'affichage de la boîte de dialogue d'authentification à l'utilisateur à chaque fois. En supprimant simplement ce paramètre d'URL, l'utilisateur ne sera plus invité aux flux d'authentification ultérieurs.
Il y a une légère différence dans la réponse que vous obtiendrez si vous utilisez le flux côté serveur (type_réponse = code) et l'accès hors connexion (type_accès = hors ligne). La première fois que l'utilisateur vous autorise (lorsqu'il voit l'écran d'approbation) ou si vous le forcez à la suite deapprobation_Prompt = force, vous obtiendrez un refresh_token et un access_token lors de l'échange du code d'autorisation.
Cependant, chaque fois que l'utilisateur n'apparaît pas avec l'écran d'approbation (autorisation ultérieure sans utiliser approbation_Prompt = force), lors de l'échange du code d'autorisation, vous ne recevrez qu'un access_token, pas de refresh_token. Ainsi, si c'est le flux que vous utilisez et si vous voulez pouvoir accéder aux données de l'utilisateur hors ligne, vous devez vous assurer que vous enregistrez le refresh_token localement pour une utilisation ultérieure, lors de sa première utilisation. Cela ne devrait se produire que si vous demandez l’accès à un type de données autre que les données authentifiées (à l’aide du flux OAuth 2, vous pouvez demander l’accès à d’autres données, par exemple les données de l’API Contacts, les données de l’API du calendrier, les données du lecteur, etc. ) comme d'habitude un flux Open ID normal n'aurait pas besoin d'un accès hors ligne.
Le simple fait de passer un paramètre supplémentaire dans la requête 'approval_Prompt=auto'
a fonctionné pour moi.
Pour moi, c'était le paramètre hd
(domaine hébergé). Après le retrait de l'URL d'autorisation, on m'a donné une liste d'utilisateurs à choisir pour Auth. Plus d'informations sur hd
paramètre ici https://developers.google.com/identity/protocols/OpenIDConnect#hd-param