有没有办法访问非默认服务帐户以在云函数中进行Google API调用?

时间:2019-06-03 04:45:39

标签: php google-cloud-platform

我希望能够使用Google云功能来进行API调用,以管理GoogleJS设置以及NodeJS中的其他相关API。我似乎无法找到一个具体的描述性解决方案来使用我目前已设置的服务帐户来实现此目的。我目前拥有的服务帐户已经涵盖了我需要调用的适当API范围。

我尝试用PHP在本地编写它。这似乎对我来说很好。我所做的工作是使用现有的可用客户端库来实现的,并引用了服务帐户并通过可用的客户端方法生成了访问令牌。

$serviceAccount = "xxxxxxxx.xxxxx.xxxxx.xxx.xx";
$client = new Google_Client();
$client->setScopes(['https://www.googleapis.com/auth/apps.groups.settings']);

$client->setApplicationName('Google Groups API PHP');
$client->setAuthConfig('includes/DEV Groups Security Manager-DEV.json');
$client->setSubject($serviceAccount);
$client->setAccessType('offline');

$client->refreshTokenWithAssertion();
$token = $client->getAccessToken();

$accessToken = $token['access_token'];



$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 
'https://www.googleapis.com/groups/v1/groups/xxxx.xxxxx.xxxxx.xxx.xx?alt=json&prettyPrint=true');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');

curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');

$headers = array();
$headers[] = 'Authorization: Bearer '. $accessToken;
$headers[] = 'Accept: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
print "<pre>'result': ";
print_r($result);
print "</pre>";

使用PHP中的示例代码非常简单明了。我只需要它的nodejs / cloud函数版本是我陷入困境的根源。该示例代码基本上返回在URL'https://www.googleapis.com/groups/v1/groups/xxxx.xxxxx.xxxxx.xxx.xx?alt=json&prettyPrint=true')中传递的组的所有组设置;

0 个答案:

没有答案