ApiError:禁止从本地Node.js应用程序访问App Engine数据存储

我有一个应用程序部署到App Engine,并希望从本地运行的Node.js应用程序访问该应用程序的数据存储。 我从Node的Hello World应用程序开始,尝试从已部署的应用程序的数据存储中检索一个实体,并按照本文档将其logging到控制台。 我的节点应用程序代码如下。

var express = require('express'); var gcloud = require('gcloud')({ projectId: 'myProjectId', keyFilename: __dirname + 'myKeyfile.json' }); var datastore = gcloud.datastore; var dataset = datastore.dataset(); var app = express(); app.get('/', function(req, res) { dataset.get(dataset.key(['Practice', 4392384]), function(err, entity) { if (err) { console.log("ERROR: " + err); } else { console.log("Practice entity: " + entity); } }); res.status(200).send('Hello, world!'); }); var server = app.listen(process.env.PORT || 8081, function () { var host = server.address().address; var port = server.address().port; console.log('App listening at http://%s:%s', host, port); }); 

我在App Engine应用程序中设置了一个服务帐户(在“访问来自其他平台的现有App Engine数据存储区”标题下),并生成了一个JSON密钥文件,该文件位于我的Node项目的根目录(与app.js)。 当试图从数据存储中获取有效的实体时,我logging了“ApiError:Forbidden”的错误。 我只能推测,App Engine项目没有正确configuration服务帐户或Cloud Datastore API没有正确启用,所以有什么我明显做错了,或者任何方式,我可以得到更多的细节,关于被返回的错误?

我在几个小时的时间内(2016年1月15日)遇到了同样的问题。 然后,Node.js代码再次开始工作,没有改变任何东西,我现在能够访问Datastore API。 显然,这是Google云服务中的一个暂时性问题。

我在这个问题上得到了Google技术支持的帮助。 事实certificate,我试图实现一个不适用于连接到部署的App Engine应用程序的本地Node应用程序的示例。 我尝试使用的服务帐户是用于将Node.js的客户端连接到应用程序的后端,但不从另一个应用程序访问一个应用程序(这正是我所做的)。 为了做到我的意图,他build议遵循这些指示。