Моя цель:
Получить доступ к информации каталога организации через вызовы API.
Проблема:
OAuth был обработан клиентом google.auth.oauth2 узла, работающим на функциях Firebase. Точные учетные данные и токены API хранятся в базе данных Firebase и извлекаются при необходимости. Когда я пытаюсь сделать вызов API следующим образом:
import { google } from 'googleapis';
const oauth2Client = new google.auth.OAuth2(
// app credential pulled from database
CLIENT_ID,
CLIENT_SECRET,
REDIRECT_URL
);
const auth = {
// Following parameters obtained from oauth response
access_token: ACCESS_TOKEN,
refresh_token: REFRESH_TOKEN,
scope: SCOPE,
token_type: 'Bearer'
expiry_date: EXPIRY_DATE
};
oauth2Client.setCredentials(auth);
const service = google.admin({version: 'directory_v1'})._options.auth = oauth2Client;
const userList = await service.users.list({
auth: oauth2Client, //probably not needed
domain: 'example.com' //my actual domain
});
Здесь этот вызов users.list () завершится ошибкой, говоря, что у меня недостаточно прав.
Другие попытки:
Функция "попробуй этот api" в каталоге Google Домашняя страница Api работает нормально, однако вызовы api, сделанные игровой площадкой google oauth2, не работают.
Разница, по-видимому, в ?key=SOMETHING
параметре, добавляемом каталогом api в запрос http. Если на площадке будет сделан тот же самый http-запрос с тем же маркером-носителем из вызовов API api и копией вставленной строки ключа, он будет работать нормально. Кажется, что ключ и токен связаны друг с другом (так что, вероятно, как-то сгенерирован из токена?).
Помощь оценена:)