我在App Engine上运行了一个Pull Task Queue。我试图从NodeJS REST客户端外部访问队列:https://github.com/google/google-api-nodejs-client
我正在通过请求传递我的服务器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的用户/浏览器,我如何获得访问令牌?
答案 0 :(得分:1)
这样做的最佳方法是利用Service Accounts in GCE。这是一个合成用户帐户,可供GCE项目中的任何人使用。让所有的auth排队可能有点棘手。关于如何在python中执行此操作,这里是an example。
您需要做的总体概述:
http://metadata/computeMetadata/v1beta1/instance/service-accounts/default/token
我不是Node专家,但我在周围搜索时发现了一个如何connect to the Datastore API from Node使用GCE服务帐户的例子。应该将其适应任务队列API应该很简单。