2017-06-25 3 views
-1

J'utilise le client PHP API Google et l'enveloppe dans une bibliothèque générique pour une utilisation sur un certain nombre de projets. La bibliothèque conserve les jetons d'accès et les jetons de renouvellement. L'accès hors connexion est donc possible. L'application utilisant la bibliothèque pourrait utiliser toutes les étendues qu'elle aime, donnant accès à tous les services d'API Google dont elle a besoin.Que puis-je appeler pour vérifier que le jeton OAuth de l'API est valide?

Maintenant, je voudrais pouvoir vérifier que le jeton d'accès OAuth stocké est toujours valide, qu'il n'a pas expiré ou été révoqué. Je comprends que cela ne peut être fait en appelant un service API. Donc, la question est: quel service? Existe-t-il un service API Google qui peut être appelé, et sera garanti d'être disponible quelle que soit la portée du jeton d'accès?

+0

Cela semble aller chercher les détails de l'utilisateur autorisant de Google: '$ oauth2 = new \ Google_Service_Oauth2 ($ client); $ oauth2-> userinfo-> get(); 'J'ai vérifié les requêtes HTTP et la réponse, et il y a certainement des données qui circulent sur l'API. Je pense que j'ai besoin des étendues 'user' et' email' pour y accéder, mais ces étendues n'atteignent aucune partie du compte que l'utilisateur autorisateur n'aura pas besoin d'accepter pour l'application. Je vais écrire ceci comme une réponse si je n'en obtiens pas une meilleure. – Jason

Répondre

0

Si vous souhaitez simplement vérifier que le jeton d'accès OAuth stocké est toujours valide ou non, vous pouvez appeler la méthode isAccessTokenExpired() depuis l'objet Google_Client.

if ($client->isAccessTokenExpired()) { 
    $refreshToken = $client->getRefreshToken(); 
    $client->refreshToken($refreshToken); 
    $client->fetchAccessTokenWithRefreshToken($refreshToken); 
} 
+0

Non, cette fonction ne fait que regarder l'heure locale et l'heure de création conservée dans le cache par rapport au jeton. Cela ne confirme en rien que le jeton est valide, malheureusement. [source] (https://github.com/google/google-api-php-client/blob/a7a6cc6d24a664f1658e5b8cbd408ba989340a78/src/Google/Client.php#L455) – Jason