google-cloud-platform - “无效的 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'
有谁知道什么可能导致我的观众检查失败以及我应该使用什么作为该值?有谁知道我访问访问令牌的错误在哪里?
解决方案
推荐阅读
- python - 字符串列表:获取“类型错误”浮动对象不可下标
- r - 如何通过 bookdown::render_book 构建乳胶 kable?
- subset - 子集缺失值
- maven - 如何将 maven 插件转换为 gradle 插件(maven-surefire-puglin)?
- angular - Angular Ivy strictTemplates true 类型 'boolean | null' 不可分配给类型 'boolean'
- ios - 应用关闭时删除远程推送通知
- javascript - Model.updateOne() 在 Document.save() 之前执行 - mongoose.js
- azure-resource-manager - ARM 模板 - 复杂计算
- opam - 如何使用 ocamlfind 或 opam 获取已安装软件包的版本?
- python - python - 如何在python的json有效负载中使用true或false?