0

我能够成功获取 PCM 授权码并使用它来获取访问令牌,但它只能工作一次。这是正确的行为吗?似乎它应该无限期地工作,因此用户不必不断地授权合作伙伴。或者一旦我获得访问令牌,我应该只在之后使用刷新令牌?

我第一次请求访问令牌时工作:

PCM 授权代码示例: 4/0AY0e-e45jfjsl_KPdjke_BzKgsBirc....

╰─ curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=MY-CLIENT-ID&client_secret=MY-CLIENT_SECRET&code=MY-AUTH-CODE&grant_type=authorization_code&redirect_uri=https://www.google.com'

{
  "access_token": "ya29.a0AfH6SMAgv...",
  "expires_in": 3599,
  "refresh_token": "1//04721e...",
  "scope": "https://www.googleapis.com/auth/sdm.service",
  "token_type": "Bearer"
}

在随后尝试使用 PCM 授权代码时,它会失败。再次使用它的唯一方法是重新创建 PCM 授权代码。

╰─ curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=MY-CLIENT-ID&client_secret=MY-CLIENT_SECRET&code=MY-AUTH-CODE&grant_type=authorization_code&redirect_uri=https://www.google.com'

{
  "error": "invalid_grant",
  "error_description": "Bad Request"
}
4

1 回答 1

0

正如有效负载所提到的,访问令牌会在一小时内到期,并且刷新令牌应该用于根据https://developers.google.com/nest/device-access/authorize获取新的访问令牌。

请注意,截至本文发布时,刷新令牌在沙箱中似乎只适用一周。此时,您必须重新运行授权流程。

于 2021-01-26T18:17:55.163 回答