Как олицетворять пользователя с правами администратора при использовании getClient () в клиенте Google API NodeJS - PullRequest
0 голосов
/ 14 мая 2018

В соответствии с рекомендацией в примере по умолчанию я пытаюсь получить доступ к api каталога для домена, для которого я создал учетную запись службы.Вот код, с которым я пытаюсь соединиться:

import { google } from 'googleapis'

const authClient = await google.auth.getClient({
    scopes: ['https://www.googleapis.com/auth/admin.directory.user.readonly']
})

const service = google.admin('directory_v1')

console.log(
    await service.users.list({
        auth: authClient,
        domain: <redacted>
    })
)

Однако, когда я пытаюсь соединиться, я получаю сообщение об ошибке Error: Not Authorized to access this resource/api.Если я удалю файл creds.json в ~/.google, ошибка изменится на сообщение о невозможности найти файл учетных данных.Кроме того, я могу получить доступ к корзине, используя тот же файл, так что я почти уверен, что моя локальная среда настроена правильно, с точки зрения аутентификации.Я также работал в течение последних нескольких дней с кем-то из команды поддержки G Suite API, который уверяет меня, что все настроено правильно в моем домене.

После просмотра онлайн, кажется, что яотсутствует попытка олицетворения учетной записи администратора при попытке подключения к моей учетной записи службы.В Интернете я нашел несколько примеров того, как сделать это с помощью стратегии аутентификации JWT, но я бы хотел продолжить использовать клиент аутентификации по умолчанию, чтобы абстрагироваться от деталей реализации.Это возможно?Если так, что я должен изменить?Я попытался установить subject и delegationEmail в обоих вызовах (getClient и list).

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 сентября 2018

Просто установите тему объекта client:

authClient.subject = 'your email address'

Документация API Google сильно зависит от языка. Нет стандарта. Что-то, документированное в PHP-клиенте, может отсутствовать в клиенте nodejs, и может потребоваться несколько часов, чтобы понять, как это сделать.

...