Есть ли способ получить доступ к учетной записи службы не по умолчанию, чтобы выполнить вызов API Google в облачных функциях? - PullRequest
2 голосов
/ 03 июня 2019

Я хочу иметь возможность использовать облачные функции 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');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...