web-dev-qa-db-fra.com

Implémentation de la connexion Oauth2, erreur irrécupérable: la classe 'Google_Service' est introuvable

Je suis en train de mettre à jour le système de connexion de mon site Web de LightOpenID vers Oauth 2.0 de Google.

Lorsque j'exige Client.php et Service/Oauth2.php, un message d'erreur s'affiche.

Erreur fatale: La classe 'Google_Service' est introuvable dans /home/myname/repos/website_current/lib/google-api-php-client/src/Google/Service/Oauth2.php à la ligne 32.

Le code que j'utilise (de mon fichier login.php) ressemble à ceci

require_once(dirname($_SERVER['DOCUMENT_ROOT']).'/lib/autoload.php');
require('Google/Client.php');
require('Google/Service/Oauth2.php');
echo "exit";
exit();

J'ai ajouté le chemin d'inclusion dans le fichier PHP.ini (dans /etc/php5/Apache2/php.ini) en tant que

include_path = ".:/usr/local/lib/php:/home/myname/repos/website_current/lib/google-api-php-client/src"

Il semble donc que mon fichier Oauth2.php ne peut pas voir l’un des autres, y compris la classe "Google_Service" qui est un dossier dans "Service.php".

Ma structure de dossier ressemble à ceci:

lib/
... autoload.php
... functions.php
... google-api-php-client/
    ... src/
        ... Google/ (etc etc)
public_html/
... login/
    ...login.php

Je ne sais pas pourquoi cela se produit. Le chemin d'inclusion doit être vu et apparaît comme un chemin inclus à l'aide de phpinfo (); Quelqu'un peut-il me donner un aperçu s'il vous plaît?

7
Gambles

Assurez-vous d’ajouter la ligneAVANTà toute autre ligne "require_once" de Google.

require_once 'google-api-php-client/autoload.php';

Je l'ai eu en dernier et ça m'a fait me gratter la tête pendant 10 bonnes minutes.

18
Durandal

Selon les instructions sur github

require_once 'google-api-php-client/autoload.php'; // or wherever autoload.php is located

Dans votre cas, il semble que l'URL ci-dessus inclue devrait bien fonctionner.

3
user2635272

À partir de novembre 2016

require_once ... 'vendor/autoload.php';
2
mikeytown2

La nouvelle façon de procéder (vers le début de 2016) est la suivante: 

require_once("Google/autoload.php");

(En supposant que vous ayez déjà défini votre chemin d’inclusion sur/chemin/vers/google-api-client-php/src)

2
Scott C Wilson

Vers cette version https://github.com/google/google-api-php-client c'est une solution envisageable 

set_include_path("google-api-php-client/src/" . PATH_SEPARATOR . get_include_path());

//.....

require_once 'Google/Service.php';
//.....
1
user3559499

Tout en travaillant avec l'intégration de Google API 

Erreur fatale: Classe 'abc' introuvable 

une erreur survient lorsqu'il existe vraiment quelque chose de différent entre la bibliothèque que vous avez dans composer.json ci-dessus et la bibliothèque en cours de chargement automatique.

eu le même problème vient de changer dans mon composer.json

{"require": {"google/apiclient": "1.0.*@beta"}}

à

{"require": {"google/apiclient": "2.0.*"}}

puis exécutez php composer.phar update (assurez-vous de donner le bon chemin pour le fichier .phar)

1
Mohit Bhasin

Après avoir suivi ce que Durandal avait posté, je l'ai essayé, mais le nouveau chemin pour moi est le suivant:

require_once 'google-api-php-client/src/Google/autoload.php';

Une fois que j'ai fait cela a changé cela a fonctionné. Merci pour l'aide.

0
Chris Holcomb

Désormais, il est obsolète et déplacé vers le sous-répertoire Google. Voici le nouveau chemin par défaut: google-api-php-client-master\src\Google\autoload.php

0
Adnan Shabbir