为什么我会得到"无效的令牌"除非我反转projectId和clientId?

时间:2016-04-01 15:17:15

标签: node.js google-app-engine google-identity-toolkit

为了为我的网站设置Google Identity Toolkit,我开始使用Quick-start App for Node.js

它在localhost上工作正常。 但当我将它移动到一个真正的应用程序引擎实例时,它就不再起作用了。 我收到gitkitClient.verifyGitkitToken()返回的错误:

  

无效令牌:无法验证ID令牌:错误的收件人,有效负载   观众!= requiredAudience

我找到a very helpful post on stackoverflow about more or less the same issue,对于Java而不是node.js:看起来projectId和clientId之间存在不匹配。

我更改了我的gitkit-server-config.json文件以交换 projectId clientId 值并且它有效!

  • 这听起来非常像谷歌方面的一个主要错误,不是吗?
  • 为什么它适用于localhost?
  • 将来会改变/修复吗?
  • 问题可能在教程中?

我现在有一个有效的解决方案,但我觉得保持这样的安全感并不安全......

我希望一位Google员工会读到这篇文章!

[编辑]

根据wyhao31的评论,我仔细查看了gitkitclient.js source code projectId clientId 都添加到了相同的受众群体中数组。 经过更多测试后,我发现您只能将项目ID(' my-project-name')放在gitkit-server-config.json文件中。 令人讨厌的是,如果你添加一个' clientId'属性名称它也在工作......

1 个答案:

答案 0 :(得分:0)

根据您的描述,如果您像这样阅读gitkit-server-config.json文件

var gitkitClient = new GitkitClient(JSON.parse(fs.readFileSync('./gitkit-server-config.json')));

我认为问题可能是由使用旧的nodejs客户端lib引起的。您可以尝试将客户端lib更新到最新版本(0.0.6)吗?或者您可以直接使用code