我在我的一个PHP脚本中使用了google vision API。
当我通过终端执行脚本时,脚本运行良好:
php /var/www/html/my_script.php
但是当我想从浏览器执行它时,我收到错误500:
PHP致命错误:未捕获 Google \ Cloud \ Core \ Exception \ ServiceException:{\ n"错误":{\ n
"代码":401,\ n"消息":"请求具有无效的身份验证 证书。预期的OAuth 2访问令牌,登录cookie或其他 有效的身份验证凭据。看到 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();
答案 0 :(得分:1)
一般来说,在构建Google Cloud客户端时,您需要提供服务帐户密钥文件。例外情况是,如果您在Compute Engine上运行,或者您具有Application Default Credentials设置。由于您看到了身份验证错误,因此看起来都不是这样。
要获取服务帐户和密钥文件,请查看documentation。
创建服务帐户并下载json密钥文件后,可以将其提供给客户端库构造函数:
B
提供有效的密钥文件后,您应该能够向Vision API发出经过身份验证的请求。
要避免此步骤,您可以在服务器或计算机上设置Application Default Credentials。