Google API PHP 错误500

Google API PHP error 500

我在我的一个 PHP 脚本中使用 google 视觉 API。

当我通过终端执行脚本时,脚本运行良好:

php /var/www/html/my_script.php

但是当我想从我的浏览器执行它时,我收到错误 500:

PHP Fatal error: Uncaught Google\Cloud\Core\Exception\ServiceException: {\n "error": {\n
"code": 401,\n "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.",\n "status": "UNAUTHENTICATED"\n }\n}\n

我不明白为什么错误消息建议我使用 OAuth 2,我不需要我的用户登录他的 google 帐户。

我的代码如下:

    namespace Google\Cloud\Vision\VisionClient;
    require('vendor/autoload.php');
    use Google\Cloud\Vision\VisionClient;

    $projectId = 'my_project_id';
$path = 'https://tedconfblog.files.wordpress.com/2012/08/back-to-school.jpg';

    $vision = new VisionClient([
        'projectId' => $projectId,
    ]);

    $image = $vision->image(file_get_contents($path), ['WEB_DETECTION']);
    $annotation = $vision->annotate($image);
    $web = $annotation->web();

一般来说,构建Google云客户端时需要提供服务账号密钥文件。如果您在 Compute Engine 上 运行,或者您设置了应用程序默认凭据,则例外。由于您看到的是身份验证错误,因此这两种情况似乎都不是。

要获取服务帐户和密钥文件,请查看 documentation

创建服务帐户并下载 json 密钥文件后,您可以将其提供给客户端库构造函数:

<?php

use Google\Cloud\Vision\VisionClient;

$vision = new VisionClient([
    'projectId' => $projectId,
    'keyFilePath' => '/path/to/keyfile.json'
]);

一旦您提供了有效的密钥文件,您应该能够向 Vision 发出经过身份验证的请求 API。

要避免此步骤,您可以在您的服务器或计算机上设置Application Default Credentials