web-dev-qa-db-fra.com

L'application continue de demander la permission "d'avoir un accès hors ligne", pourquoi?

Après avoir autorisé l'application avec oAuth2 et acquis des autorisations pour les étendues demandées, je reçois toujours un écran me demandant si j'accorde l'autorisation à Avoir un accès hors ligne, chaque fois que j'essaie de me connecter avec Google oAuth2. N'est-ce pas quelque chose qui ne devrait pas réapparaître, une fois que je lui ai accordé la permission de l'avoir?

enter image description here

34
jayarjo

Utilisez-vous le approval_Prompt paramètre? Essayez de ne pas demander à nouveau un accès hors ligne si vous disposez déjà d'un jeton d'actualisation. Il doit rester valide même si l'utilisateur se reconnecte, sans demander d'accès hors ligne.

Une référence à ce sujet peut être trouvée ici .

10
user2897701

Cette invite peut provenir de deux paramètres,

  • access_type (s'il est "hors ligne")
  • approbation_Prompt (s'il s'agit de 'forcer')

assurez-vous que vous avez défini access_type sur 'online' et apporoval_Prompt sur 'auto'

 $client->setAccessType('online');
 $client->setApprovalPrompt('auto') ;
13
Deepak Mittal

Je suppose que votre application a approbation_Prompt = forcer pour forcer le OAuth à chaque fois. Étant donné que l'utilisateur a déjà autorisé les étendues que vous avez demandées, il n'est pas nécessaire de les répéter. Cependant, l'écran doit dire quelque chose, donc en l'absence de meilleures idées, Google demande un accès hors ligne ".

Assurez-vous simplement que vous ne forcez pas l'authentification et que tout ira bien.

7
pinoyyid

Ce n'est pas une erreur. C'est le scénario normal de google oauth2.

Premier consentement du processus comme suit:

  1. L'utilisateur consent à ce que l'application obtienne des informations sur l'utilisateur.
  2. Lorsque l'utilisateur clique sur le bouton Accepter, le navigateur enregistre les informations de consentement dans un cookie et le compte Google enregistre l'autorisation (veuillez consulter https://security.google.com/settings/security/permissions )

À partir du deuxième processus:

Le navigateur vérifie l'autorisation de cookie du compte Google.

  • Si le cookie existe dans le navigateur et a l'autorisation de cette application ( https://security.google.com/settings/security/permissions ): l'écran de consentement sera ignoré
  • Si le cookie existe dans le navigateur mais n'a pas l'autorisation pour cette application: l'écran de consentement sera affiché
  • Si le cookie n'existe pas dans le navigateur: l'application affichera 'Avoir un accès hors ligne'.
5
ngocld