0

拉任務隊列我有一個拉任務隊列App Engine上運行。我試圖從REST的NodeJS外部客戶端訪問隊列:https://github.com/google/google-api-nodejs-client谷歌進行身份驗證與客戶的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,而不是用戶/瀏覽器可處理OAuth的重定向URL?

回答

1

做到這一點的最好辦法是採取Service Accounts in GCE優勢。這是GCE項目中任何人都可以使用的合成用戶帳戶。獲得所有的認證可能有點棘手。這裏是an example如何在Python中做到這一點。

的,你需要做的大致輪廓:

  1. 啓動GCE實例與任務隊列的OAuth範圍。
  2. 的GCE服務帳戶添加到任務隊列的ACL queue.yaml中。
  3. 獲取訪問令牌。它看起來像您可以使用computeclient.js憑據對象的HTTP調用此令牌在任何API調用任務隊列API對自動化http://metadata/computeMetadata/v1beta1/instance/service-accounts/default/token
  4. 使用。

我不是一個Node專家,但是在我周圍搜索時發現了一個如何使用來自GCE的服務帳戶的示例connect to the Datastore API from Node。將其適配到任務隊列API應該很簡單。