0

У меня есть очередь на выполнение задач в App Engine. Я пытаюсь получить доступ к очереди снаружи от клиента NodeJS REST: https://github.com/google/google-api-nodejs-clientАутентификация очереди Google Pull с помощью клиента NodeJS

Я передаю мой ключ API сервера с использованием запроса:

var googleapis = require('googleapis'), 
    API_KEY = '...'; 

googleapis 
    .discover('taskqueue', 'v1beta2') 
    .execute(function(err, client) { 
     var req = client.taskqueue.tasks.insert({ 
      project: 'my-project', 
      taskqueue: 'pull-queue', 
      key: API_KEY 
     }); 
     req.execute(function(err, response) { 
      ... 
     }); 
    }); 

Но я получаю обратно 401 «Войти Обязательно» сообщение. Что мне не хватает?

Если мне нужно использовать OAuth, как я могу получить токен доступа, если мой клиент является сервером NodeJS вместо пользователя/браузера, который может обрабатывать URL-адрес перенаправления OAuth?

ответ

1

Лучший способ сделать это - использовать Service Accounts in GCE. Это синтетическая учетная запись пользователя, которая может использоваться любым пользователем проекта GCE. Получение всего выделенного авто может быть немного сложным. Вот an example о том, как это сделать в python.

Общий набросок того, что вам нужно сделать:

  1. Запустите GCE экземпляра с OAuth объема очереди задач.
  2. Добавьте учетную запись службы GCE в очередь ACL очереди задач в queue.yaml.
  3. Приобретите токен доступа. Похоже, вы можете использовать объектный объектдля автоматизации HTTP-вызова до http://metadata/computeMetadata/v1beta1/instance/service-accounts/default/token
  4. Используйте этот токен в любом вызове API для API очереди задач.

Я не эксперт узла, но, побывав там, я нашел пример того, как connect to the Datastore API from Node использовать учетные записи службы из GCE. Это должно быть легко адаптировать к API очереди задач.

Смежные вопросы