如何从 PHP 验证 Google Cloud Translate?
How can I authenticate Google Cloud Translate from PHP?
我正在尝试在 Laravel (v ^6.0) 中使用 google/cloud-translate 库 (v ^1.5)。
在GoogleController.php
中:
public function translate(Request $request) {
$request->validate([
'source' => 'required|string|min:2|max:5',
'target' => 'required|string|min:2|max:5',
'q' => 'required|string',
]);
$translate = new TranslateClient([
'keyFile' => base_path(config('services.google.json_path')),
'projectId' => config('services.google.project_id'),
'suppressKeyFileNotice' => true,
]);
// Translate text from english to french.
$result = $translate->translate($request->q, [
'target' => explode($request->target, '-')[0],
'source' => explode($request->source, '-')[0],
]);
return $result;
}
但是在 Postman 中调用路由给我错误:
Argument 2 passed to Google\Auth\CredentialsLoader::makeCredentials() must be of the type array, string given, called in /[...]/vendor/google/cloud-core/src/RequestWrapperTrait.php on line 155
我已经检查了 projectId 和 keyFile 的路径是否正确。任何人都可以阐明如何克服这个错误吗?
您正在指定密钥文件的路径,因此您应该改用 keyFilePath
参数。
试试这个:
$translate = new TranslateClient([
'keyFilePath' => base_path(config('services.google.json_path')),
...
]);
来自 TranslateClient.__construct
文档:
keyFile
:服务帐户凭据的内容。json 从 Google 开发者控制台检索到的文件。例如:json_decode(file_get_contents($path), true)
.
keyFilePath
:您的服务帐户凭据的完整路径。json 从 Google 开发者控制台检索到的文件。
我正在尝试在 Laravel (v ^6.0) 中使用 google/cloud-translate 库 (v ^1.5)。
在GoogleController.php
中:
public function translate(Request $request) {
$request->validate([
'source' => 'required|string|min:2|max:5',
'target' => 'required|string|min:2|max:5',
'q' => 'required|string',
]);
$translate = new TranslateClient([
'keyFile' => base_path(config('services.google.json_path')),
'projectId' => config('services.google.project_id'),
'suppressKeyFileNotice' => true,
]);
// Translate text from english to french.
$result = $translate->translate($request->q, [
'target' => explode($request->target, '-')[0],
'source' => explode($request->source, '-')[0],
]);
return $result;
}
但是在 Postman 中调用路由给我错误:
Argument 2 passed to Google\Auth\CredentialsLoader::makeCredentials() must be of the type array, string given, called in /[...]/vendor/google/cloud-core/src/RequestWrapperTrait.php on line 155
我已经检查了 projectId 和 keyFile 的路径是否正确。任何人都可以阐明如何克服这个错误吗?
您正在指定密钥文件的路径,因此您应该改用 keyFilePath
参数。
试试这个:
$translate = new TranslateClient([
'keyFilePath' => base_path(config('services.google.json_path')),
...
]);
来自 TranslateClient.__construct
文档:
keyFile
:服务帐户凭据的内容。json 从 Google 开发者控制台检索到的文件。例如:json_decode(file_get_contents($path), true)
.keyFilePath
:您的服务帐户凭据的完整路径。json 从 Google 开发者控制台检索到的文件。