使用Node.js和Google Cloud数据存储区启动入门教程时出现令牌错误

时间:2015-07-08 05:47:20

标签: node.js google-app-engine google-compute-engine access-token google-cloud-datastore

我正在使用google appengine,node.js和socket.io构建一个webapp,我正在尝试设置一个google计算实例,以便在tutorial之后使用google cloud数据存储api。到目前为止,我已经完成了第1步和第2步,但是在本地运行下载的adams.js文件时,我得到了这个:

Error: No access or refresh token is set.

我试过的东西:

  • gcloud auth login (这会让我登录谷歌,但不会在本地设置我的令牌)
  • 更改我导出DATASTORE_SERVICE_ACCOUNT和DATASTORE_PRIVATE_KEY_FILE值的方式,如字符串,纯文本等。
  • 在错误之前将我的凭据记录在该行上(我肯定错过了一个令牌)
  • 创建新服务帐户并再次执行密钥创建步骤
  • 然 卷曲“http://metadata/computeMetadata/v1/instance/service-accounts/default/token”-D“Metadata-Flavor:Google”以获取更多信息。

该命令给了我这个:

<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>

所以我肯定错过了一个令牌,但由于某种原因,我无法弄清楚我应该如何得到它。或者在部署我的应用程序并希望在线访问API时,我需要存储它。感觉这应该是一个非常容易找到的东西,但由于某种原因,我正在阅读的所有文档都引导我进入墙壁。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:2)

如果您的代码在Google Compute Instance上运行,且实例的范围正确,则无需设置任何环境变量。

您可以通过查看开发人员控制台中的实例或询问元数据服务器来确认范围:

curl http://metadata/computeMetadata/v1/instance/service-accounts/default/scopes -H "Metadata-Flavor: Google"

要使用Cloud Datastore,datastoreuserinfo.email范围都必须存在。