首页 > 解决方案 > 列出设备和结构为空

问题描述

使用 Golang SDK 进行智能设备管理,我想访问我的 Nest 恒温器。

我能够对 SDM API 进行身份验证和成功的 API 调用。但是,当我调用Devices.List(...).Do()响应时包含一个空列表。

devices, err := sdmService.Enterprises.Devices.List(parent).Do()
if err != nil {
    log.Fatal(err)
}
log.Print("Got devices")
log.Printf("%+v", devices)

恒温器肯定与我正在验证的 Google 帐户相关联。

有没有我可能错过的东西。一个简单的代码参考会很棒!

编辑

看起来我可能需要在下面的屏幕截图中添加以下范围。然后需要验证。然后我需要有一个应用程序主页、隐私政策、YouTube 视频来展示我将如何使用这些数据......

如何适合爱好者?

Google OAuth 范围

编辑 2

个人项目显然免于验证过程。我如何使项目个性化!为什么这么难?(我很RTFM!)

编辑 3

现在得到一点。晚上停下来。我意识到关于个人项目的声明只是意味着“继续它,但你的用户会看到一个警告屏幕”。

但是,当我遵循身份验证流程时,权限列表中不会出现任何设备。我认为这就是问题所在。

标签: nest-device-access

解决方案


所以问题出在文档的第一页之一上!典型的。我休息了一下。从顶部向后盘旋,以更清晰的头脑,该文件与我拼凑在一起的额外上下文是有意义的。

我不得不改变

conf := &oauth2.Config{
        ClientID:     "...",
        ClientSecret: "...",
        RedirectURL:  "...",
        Scopes: []string{
            smartdevicemanagement.SdmServiceScope,
        },
        Endpoint: google.Endpoint
    }

conf := &oauth2.Config{
        ClientID:     "...",
        ClientSecret: "...",
        RedirectURL:  "...",
        Scopes: []string{
            smartdevicemanagement.SdmServiceScope,
        },
        Endpoint: oauth2.Endpoint{
            AuthURL:  fmt.Sprintf("https://nestservices.google.com/partnerconnections/%s/auth", projectID),
            TokenURL: google.Endpoint.TokenURL,
        },
    }

推荐阅读