Google Cloud缺少API密钥

时间:2018-09-05 20:30:53

标签: php google-cloud-platform

我正在尝试将Google's Natural Language API用于PHP,并按照说明进行操作,但是在编写的应用程序中出现错误:

  

致命错误:未捕获的Google \ Cloud \ Core \ Exception \ ServiceException:{   “错误”:{“代码”:403,“消息”:“该请求缺少有效的API   键。“,”状态“:” PERMISSION_DENIED“}}

我已经下载了帐户密钥文件,运行了导出,但是出现403错误。

我已经创建了一个指向项目文件夹中文件的符号链接,运行导出,但是出现403错误。

我将导出文件放在“ .bash_profile”文件中,退出了终端会话,但出现403错误。

  

通过设置为您的应用程序代码提供身份验证凭据   环境变量GOOGLE_APPLICATION_CREDENTIALS。更换   [PATH]包含您的服务的JSON文件的文件路径   帐户密钥,以及[FILE_NAME]和文件名。 仅此变量   适用于您当前的Shell会话,因此,如果您打开一个新会话,   再次设置变量

当我运行:echo $GOOGLE_APPLICATION_CREDENTIALS时,导出不存在,因此我再次运行它,但是出现403错误。

我按照文档中的字母进行操作,经过了三遍,每次遇到相同的403错误。

我没有看到任何说明要求我在应用程序中存储API密钥的字符串值,但是我发现很多人都建议这样做,但没有提供有关如何或在何处的示例。

因此,欢迎您提出一些建议!

1 个答案:

答案 0 :(得分:1)

仅不使用导出;而您的~/.bashrc不是Apache的.bashrc

但是将文件的路径直接添加到PHP代码中;例如。变成config.php

使用putenv('GOOGLE_APPLICATION_CREDENTIALS=/var/www/[FILE_NAME].json');

同时禁止使用.htaccess通过HTTP访问该文件。

,甚至可以使用.htaccess进行设置

SetEnv GOOGLE_APPLICATION_CREDENTIALS "/var/www/[FILE_NAME].json"