实施Oauth2登录,致命错误:Class' Google_Service'未找到

时间:2015-02-05 18:45:59

标签: php oauth-2.0 google-oauth google-api-php-client

我正在将我的网站登录系统从LightOpenID更新为Google的Oauth 2.0。

当我需要Client.php和Service / Oauth2.php时,我收到错误

  

致命错误:第32行的/home/myname/repos/website_current/lib/google-api-php-client/src/Google/Service/Oauth2.php中找不到“Google_Service”类

我正在使用的代码(来自我的login.php文件)看起来像这样

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

我在PHP.ini中添加了包含路径(在/etc/php5/apache2/php.ini中)

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

所以看来我的Oauth2.php文件看不到任何其他包含的“Google_Service”类,这是“Service.php”中的一个文件夹。

我的文件夹结构如下所示:

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

我不知道为什么会这样。应该看到包含路径,并使用phpinfo()显示为包含的路径;有人可以给我一些见解吗?

8 个答案:

答案 0 :(得分:18)

确保您添加 BEFORE 任何其他Google" require_once"线。

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

我把它弄到了最后,它让我挠了头10分钟。

答案 1 :(得分:3)

根据github的说明:

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

在你的情况下,似乎上面的包含url应该可以正常工作。

答案 2 :(得分:2)

这种做法的新方式(大约在2016年初)是

require_once("Google/autoload.php");

(假设您已经将包含路径设置为/ path / to / google-api-php-client / src)

答案 3 :(得分:2)

截至2016年11月

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

答案 4 :(得分:1)

对于此版本https://github.com/google/google-api-php-client,这是一个可行的解决方案

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

//.....

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

答案 5 :(得分:1)

使用Google API集成时

  

致命错误:班级' abc'找不到

当您在上面的composer.json中的库与实际上正在自动加载的库之间肯定存在某些不同之处时,会出现

错误。

我的composer.json

中发生了同样的问题
{"require": {"google/apiclient": "1.0.*@beta"}}

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

然后执行php composer.phar update(确保为.phar文件提供正确的路径)

答案 6 :(得分:0)

现在它已被弃用并移至Sub Google目录。以下是新的默认路径: google-api-php-client-master\src\Google\autoload.php

答案 7 :(得分:0)

在遵循Durandal发布的内容之后,我尝试了它,但我的新路径是:

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

一旦我改变它就行了。谢谢你的帮助。