Я хочу иметь возможность использовать облачные функции Google для выполнения вызовов API для управления настройками групп Google и другими соответствующими API-интерфейсами в NodeJS. Я просто не могу найти конкретное и описательное решение для использования учетной записи службы, которую я в настоящее время настроил для достижения этой цели. Учетная запись службы, которая у меня есть в настоящее время, уже покрывает соответствующие области API, которые мне нужно вызвать.
Я попытался написать это на PHP локально. Кажется, это работает для меня нормально. То, что я сделал, использовало существующие клиентские библиотеки для достижения этой цели, сослалось на учетную запись службы и сгенерировало токен доступа с помощью доступных клиентских методов.
<code>$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 "
";
С примером кода на PHP довольно легко и просто. Мне просто нужна версия функции nodejs / cloud - это корень моей дилеммы. Пример кода в основном возвращает все групповые настройки группы, переданные в URL 'https://www.googleapis.com/groups/v1/groups/xxxx.xxxxx.xxxxx.xxx.xx?alt=json&prettyPrint=true');