无法读取未定义的属性“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:未捕获的类型错误:无法读取未定义的属性(读取“属性”)