我如何认证Google Cloud Translate?

问题描述 投票:1回答:1

我正在尝试在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;
}

但是在邮差中呼叫路线会给我错误:

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的路径是否正确。任何人都可以阐明如何克服此错误吗?

php google-cloud-platform google-api-php-client google-translate
1个回答
2
投票

您正在指定密钥文件的路径,因此应改用keyFilePath参数。

尝试一下:

$translate = new TranslateClient([
    'keyFilePath' => base_path(config('services.google.json_path')),
    ...
]);

来自TranslateClient.__construct文档:

  • TranslateClient.__construct:从Google开发者控制台检索的服务帐户凭据.json文件的内容。例如:keyFile
  • [json_decode(file_get_contents($path), true):从Google Developers Console检索到的服务帐户凭据.json文件的完整路径。
© www.soinside.com 2019 - 2024. All rights reserved.