Google_Service_OAuth2 是 'Undefined type' 在 PHP

Google_Service_OAuth2 is 'Undefined type' in PHP

我正在尝试使用 Google 登录,但它显示 'Google_Service_OAuth2' 为未定义类型。

我找到了这个堆栈 post:Google_Service_Oauth2 is undefined 但上面没有回复。

我用 composer 安装了 apiclient,经过研究我发现每个文件都位于正确的位置(例如 src 文件夹)。此外,我使用 composer 安装的其他库工作正常。

使用命令 composer require google/apiclient composer 安装了 2.12 版。我已经尝试安装 v2.0,这是我发现的大多数指南和 posts 使用的版本。

我已经 运行 composer dump-autoload 并重新启动了我的机器以防万一。

这是我的代码:

use Google\Client;

$client = new Google_Client();

$clientID = 'MY CLIENT ID';
$clientSecret = 'MY CLIENT SECRET';
$redirectUri = 'http://localhost/dhi-portal/users/login';


$client->addScope('email');
$client->addScope('profile');

session_start();



if (isset($_GET['code'])) {
    $token = $client->fetchAccessTokenWithAuthCode($_GET['code']);

    if (!isset($token['error'])) {
        $client->setAccessToken($token['accessToken']);

        $_SESSION['accessToken'] = $token['accessToken'];

        $googleService = new Google_Service_OAuth2($client);
                    
    }
}

我没有从这里继续下去,因为它显示了未定义的类型。

任何指导将不胜感激。

我从 google/apiclient 版本 2.9.x => 2.12.x 更新时遇到了同样的问题。问题是他们将 类 改为使用命名空间。

**Before**
$client = new Google_Client();
$service = new Google_Service_Books($client);


**After**
$client = new Google\Client();
$service = new Google\Service\Books($client);

来源:https://github.com/googleapis/google-api-php-client/blob/main/UPGRADING.md

所以在你的情况下,如果你想使用 2,你需要像这样重写你的代码。12.x:

$client = new Google\Client();
...
$googleService = new Google\Service\Oauth2($client);