我正在开发一个CMS模块,需要将Google OAUTH 2用于服务器到服务器应用程序。根据{{3}},需要设置一个环境变量,其路径为.json,如下所示:
putenv('GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json');
这是棘手的部分。如果我在一个独立的Web应用程序中使用它,那么就没有任何问题,但是因为我正在使用CMS模块,将该文件存储在驱动器上或创建与该使用相关的任何类型的钩子这个文件会带来潜在的安全威胁,因为我已经看到了如何通过使用另一个模块偷偷窃取密钥的内容。
我想将此文件的内容存储在数据库中,问题是:有没有办法在不使用路径的情况下设置GOOGLE_APPLICATION_CREDENTIALS的环境值?
答案 0 :(得分:1)
初始化客户端时,可以使用接受为配置选项的keyFile密钥。
取自官方api文档的示例代码-https://github.com/googleapis/google-cloud-php
require 'vendor/autoload.php';
use Google\Cloud\Core\ServiceBuilder;
// Authenticate using a keyfile path
$cloud = new ServiceBuilder([
'keyFilePath' => 'path/to/keyfile.json'
]);
// Authenticate using keyfile data
$cloud = new ServiceBuilder([
'keyFile' => json_decode(file_get_contents('/path/to/keyfile.json'), true)
]);
可以使用任何Google客户端代替ServiceBuilder。