Google API PHP error 500



我正在我的一个PHP脚本中使用Google Vision API。

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

php /var/www/html/my_script.php

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

PHP 致命错误:未捕获 Google\Cloud\Core\Exception\ServiceException: { "error": {
"代码":401, "消息":"请求具有无效的身份验证 凭据。预期的 OAuth 2 访问令牌、登录 Cookie 或其他 有效的身份验证凭据。看 https://developers.google.com/identity/sign-in/web/devconsole-project.", "状态": "未通过身份验证">

}}

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

我的代码如下:

    namespace GoogleCloudVisionVisionClient;
    require('vendor/autoload.php');
    use GoogleCloudVisionVisionClient;
    $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 Cloud 客户端时,您需要提供服务帐号密钥文件。例外情况是在计算引擎上运行,或者设置了应用程序默认凭据。由于您看到身份验证错误,因此这两种情况似乎都不是。

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

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

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

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

若要避免此步骤,可以在服务器或计算机上设置应用程序默认凭据。

最新更新