无法读取未定义的属性“client_secret”

Posted

技术标签:

【中文标题】无法读取未定义的属性“client_secret”【英文标题】:cannot read property 'client_secret' of undefined 【发布时间】:2022-01-16 06:26:56 【问题描述】:

按照https://developers.google.com/google-apps/activity/v1/quickstart/nodejs 的说明,我尝试使用 Node.js 创建示例程序

我在尝试运行时抛出一个错误,提示 cannot read property 'client_secret' of undefined

寻找您的宝贵建议。

提前致谢。

【问题讨论】:

【参考方案1】:

你好像错过了Step 1: Turn on the Google Apps Activity API。

创建凭证后:

f。单击右侧的 file_download(下载 JSON)按钮 客户 ID。

g.将此文件移动到您的工作目录并重命名 client_secret.json。把它放在你的项目文件夹中。

【讨论】:

我没有错过第一步。我已下载 JSON 文件,将其重命名为 client_secret 并将其放在我的工作目录中。 当你将它重命名为client_secret时,你是否保留了文件扩展名.json?所以文件一定是client_secret.json 并且你把它放在你的项目文件夹中了吗? 是的,文件名是 client_secret.json 我没有忘记扩展名 .json。我也将文件放在项目文件夹中。 你把它放在你的项目文件夹里了吗? 现在应该可以工作了。快速运行一下,它对我有用。您的 oauth clientID 是“其他”类型的吗?【参考方案2】:

var clientSecret = credentials.installed.client_secret; 在这一行中,凭据指向client_secret.json,因此必须“安装”第一个密钥。在我的情况下,关键是“网络”,这导致了错误。我刚刚将键“web”重命名为“installed”。

【讨论】:

【参考方案3】:

您的client_secret.json 文件需要包含以下行:

"redirect_uris": ["urn:ietf:wg:oauth:2.0:oob", "http://localhost"]

而不是像下面这样的行:

"javascript_origins":
    [
      "http://localhost:8080",
      "http://localhost:1453",
      "http://127.0.0.1:1453",
      "http://localhost"
    ]

您也可能希望将client_secret.json 中的链头从web 更改为installed,反之亦然。

【讨论】:

【参考方案4】:

我遇到了这个问题,但我的凭据文件类型错误。我最初使用“Web Server (Nodejs)...”,它的标题是“web”而不是“已安装”,但是当我再次这样做并选择“Windows UI (cmd line)”时,我得到了格式正确的文件。

【讨论】:

【参考方案5】:

由于没有名为“已安装”的密钥,因此将其解析为undefined

credentials.json 中将键“web”更改为“已安装”。可能文档需要从 Google 的角度进行更改。

之前

之后

【讨论】:

【参考方案6】:

尝试选择应用程序类型“其他”。 选择“帮我选择”选项,您可以在此处选择其他应用程序类型。 这样,您的 client_secret.json 将具有名为“已安装”的变量。

【讨论】:

【参考方案7】:

最新版本的 Google Drive API 在创建 OAuth API 密钥时将有一个桌面客户端选项。选择它,它将包含从脚本访问 Google 驱动器所需的所有信息。

【讨论】:

以上是关于无法读取未定义的属性“client_secret”的主要内容,如果未能解决你的问题,请参考以下文章

带有 Ionic 4 的 SQLite?无法读取未定义类型错误的属性“then”:无法读取未定义的属性“then”

`无法读取未定义的属性(读取'组件')`

NextJS:未捕获的类型错误:无法读取未定义的属性(读取“属性”)

使用地图时反应'无法读取未定义的属性'

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?

查询返回错误“无法读取未定义的属性(读取'节点')”