首页 > 解决方案 > “无效的 JWT:观众检查失败。” 尝试使用服务帐户从 Google 获取 OAuth 令牌时出错

问题描述

我正在尝试从 google 获取 OAuth2 令牌并不断收到此响应:

{
  "error": "invalid_grant",
  "error_description": "Invalid JWT: Failed audience check. The right audience is https://oauth2.googleapis.com/token?grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJqb2Jpbmppc21pQGluZGlhLW5ldHN1aXRlLmlhbS5nc2VydmljZWFjY291bnQuY29tIiwic3ViIjoiaWxzZS5wcmFra2VuQHpvbm5lcGFuZaaaJzY29wZSI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvY2FsZW5kYXIiLCJhdWQiOiJodHRwczovL29hdXRoMi5nb29nbGVhcGlzLmNvbS90b2tlbiIsImV4cCI6MTYxNTQ2MTU1OSwiaWF0IjoxNjE1NDU3OTU5fQ.HQ2nhaaaiB9b6jMq4l"
}

我需要在未经用户同意的情况下访问谷歌日历 API,所以我使用了服务帐户。我需要代表应用程序使用服务帐户。我已将 G Suite 域范围的权限授予服务帐户,因为我已将域范围的权限委托给服务帐户。

我遵循了谷歌文档中定义的所有步骤

当我尝试获取访问令牌时,出现错误。错误是

无效授权:无效的 JWT:观众检查失败。

我正在使用邮递员发送请求:

curl --location --request POST 'https://oauth2.googleapis.com/token?grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&assertion=eyJhbGciOiJSUaaaIsInRIkpXVCIsImtpZCI6ImNkNjcwMzg4YzNhNjJiODBkZWJiNGQ2NmNiMzhiMDdhZDc5YjI0OWQifQ.eyJpc3MiOiJqd3Qtc2VydmljZS1hY2NvdW50QGp3dC1mb3ItY2FsZW5kYXIuaWFtLmdzZXJ2aWNlYWNjb3VaaaaaaiJmZWJpbkBqb2JpbmFuZGppc21pLmNvR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vYXV0aC9jYWxlbmRhciIsImF1ZCI6Imh0dHBzOi8vb2F1dGgyLmdvb2dsZWFwaXMaaaaNjE1NDY3NTcxLCJpYXjE2MTU0NjM5NzF9.NYwUaaaapxGmCWkUuEJurPWu5-vTrEpcL16g3lut8Z23p0R_jxOZZrYDA5lwDEjkqN0xxthvye7XBhvkpwRIn6kkydtw2p142O3aMczuK0wRV1RQmhO37oerKMPpZB8gpJf9RAL4BBNHx_CUgu4PN5TIaVw1raGWOoyfrwUnHyU8MFMHIfIBcm0h34GF9NfvBddSAfKPPqM0KsAZth4BHDa1ZYuYwXfRKQuJUZX1qpl6_z7Zlhl3Np4KShIvGaIAtd6OHR4EWDnV4pfzSDYy_JjCxRSbJ6-UDUKR86dLHuvpRlvMbrzJ07Gms47A' \
--header 'Content-Type: application/x-www-form-urlencoded'

有谁知道什么可能导致我的观众检查失败以及我应该使用什么作为该值?有谁知道我访问访问令牌的错误在哪里?

标签: google-cloud-platformoauth-2.0google-apijwtgoogle-calendar-api

解决方案


推荐阅读