0

Je suis un utilisateur de l'API YouTube pour la première fois et j'ai suivi la documentation. Cependant, le doc est très flou quand il s'agit de fonctionnalités non essentielles, et il ne semble pas y avoir d'autres documents à vérifier pour répondre à ma propre requête.Comment puis-je vérifier si un jeton a été révoqué (par l'utilisateur) avant de l'utiliser hors connexion dans une application côté serveur?

Permettez-moi d'expliquer:

J'ai mis en place l'exemple auth/jeton de base fourni https://developers.google.com/youtube/reporting/guides/authorization/server-side-web-apps#example et il fonctionne bien.

Maintenant, en supposant que le jeton d'accès est stocké dans une base de données plutôt que la session (pour une utilisation ultérieure dans la récupération de données « hors ligne ») ... ma question est:

Comment puis-je vérifier si l'utilisateur a révoqué accès à mon application, vraisemblablement via ses paramètres de compte? Que se passe-t-il s'il est révoqué de cette manière et que j'essaie d'utiliser le jeton d'accès (désormais non valide) hors ligne?

MISE À JOUR

Malheureusement, il ne semble pas être de retour An error occurred: { error: invalid_grant, error_description: Token has been expired or revoked. }

L'erreur brute renvoyée est

Uncaught exception 'Google_Service_Exception' with message '{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "errors": [ { "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "domain": "global", "reason": "unauthorized" } ], "status": "UNAUTHENTICATED" } } 

Ce qui peut être pris, mais est très bizarre. Je n'ai pas d'identifiants invalides comme l'erreur l'indique ... Je n'ai aucune autorisation!

La documentation manque sérieusement à ce sujet.

+0

Avez-vous trouvé une solution ..? – usama

Répondre

0

Si l'utilisateur révoque l'autorisation de votre application et qu'une tentative d'utilisation du jeton d'accès (désormais non valide) est en cours, le message An error occurred: { error: invalid_grant, error_description: Token has been expired or revoked. } sera renvoyé. La manière correcte de procéder est de vérifier si cette erreur est renvoyée et, si c'est le cas, de rediriger l'utilisateur pour qu'il s'authentifie à nouveau afin qu'un nouveau jeton d'accès soit généré, un accès est correctement accordé. Prenez par exemple la logique suivante:

try { 

    //request the service 

} catch (Exception $e) {   

    if($e->getMessage() == "Token has been expired or revoked"){ 
     //redirect user to authenticate again 
    } 
}