2017-04-21 6 views
1

J'ai autorisé plusieurs comptes via OAuth2 de Google. Comment puis-je obtenir la liste des comptes que j'ai autorisés? Je veux être en mesure de révoquer l'accès. Pour plus de clarté, je passe plusieurs fois par le flux OAuth2, chaque fois que je sélectionne un compte différent. Ensuite, j'obtiens le jeton d'accès/rafraîchissement et je l'enregistre dans ma base de données. En faisant cela, j'ai remarqué que j'ai toujours accès à des ressources qui ne sont pas liées au dernier compte, mais aussi à celles qui sont liées à des comptes précédemment autorisés. Je souhaite pouvoir lister et autoriser mes utilisateurs à révoquer l'accès à ces comptes.Obtenir des comptes autorisés Google OAuth2

+0

Lorsque vous dites "Je reçois le jeton d'accès/actualisation et l'enregistre dans ma base de données", enregistrez-vous chaque jeton de rafraîchissement? ou en conservez-vous seulement et en jetez-vous d'autres? Votre question implique ce dernier, mais je ne comprends pas très bien pourquoi vous demanderiez une autorisation et ne sauvegarderiez pas le jeton. – pinoyyid

+0

@pinoyyid Chaque utilisateur a son propre jeton. Chaque fois qu'il effectue une authentification OAuth2, le nouveau jeton écrase celui existant. Je suis confus parce que certaines ressources semblent être accessibles par des jetons multiples bien que ce ne soit pas supposé l'être. Je ne sais pas si c'est mon problème ou si l'API (API GMB) est conçue de cette façon. J'ai posté ici aussi: https://www.en.advertisercommunity.com/t5/Google-My-Business-API/Designing-application-for-multiple-users/td-p/1121514 –

+0

Vous devriez clarifier ce que vous signifie par "jeton". Dans Google Oauth, il y a des jetons d'actualisation et des jetons d'accès. Ceux-ci ont des buts et des caractéristiques différents. Puis-je vous suggérer d'éditer votre question pour préciser quels jetons vous sauvegardez. Clarifiez également ce que vous entendez par "utilisateur" et par "compte". Dans Google, utilisateur = compte, mais vous semblez dire qu'un utilisateur a plus d'un compte. Encore une fois, il serait utile que vous ajoutiez plus d'informations à votre question afin que ce que vous demandez soit clair. – pinoyyid

Répondre

0

Il n'existe aucun moyen d'obtenir une liste des utilisateurs qui ont authentifié votre application. J'ai aussi ces problèmes parce que j'ai un certain nombre d'utilisateurs qui utilisent encore une très ancienne version de mon application, je voudrais les informer qu'ils devraient mettre à jour mais je ne peux pas car je n'ai aucun contact avec eux.

accès Révoquer des utilisateurs connus:

Votre application peut avoir autant d'utilisateurs que vous voulez autorisé à lui. Le jeton d'actualisation vous donne accès à chacune des données des utilisateurs. L'accès restera jusqu'à ce que l'utilisateur le révoque ou que le jeton d'actualisation n'ait pas été utilisé depuis six mois.

Vous pouvez révoquer programmaticly par revoking the token

Essayez d'utiliser:

$client->revokeToken(); 

Cela devrait révoquer l'ancien accès donné par un utilisateur. Vous devrez bien sûr charger l'ancien jeton d'actualisation dans le client.

+0

Votre réponse semble suggérer que je ne peux révoquer que le jeton entier. Pour clarifier, ce que je demande: Un utilisateur dans mon application (détient un seul jeton) peut passer par OAuth2 avec plusieurs comptes Google, autorisant ainsi l'accès à divers services avec plusieurs comptes. Mais je veux pouvoir "désautoriser" sélectivement certains comptes Google liés à ce jeton. Est-ce que ce n'est pas possible? –

+0

Lorsqu'un utilisateur authentifie votre application, il s'agit d'un compte Google unique. Chaque compte google sera assigné à un jeton d'actualisation (il peut y avoir plusieurs jetons d'actualisation en attente pour un seul utilisateur). Vous avez besoin du jeton d'actualisation pour le révoquer. Pas le compte google réel. Non, ce que vous voulez faire n'est probablement pas possible à moins que vous ayez gardé trace des jetons d'actualisation pour les différents comptes google. – DaImTo

+0

Pour être clair, son jeton est lié à un seul compte google. – DaImTo