我正在寻找有关Google的OAuth2 API中RFC7636(OAuth令牌交换的校样密钥)状态的具体信息。
Google公开了一个OAuth 2.0和OIDC提供商API,可以获取访问令牌。 RFC7636中描述了一种建议的标准,用于在令牌交换中使用证明密钥,我们已经开始在与主要身份提供商的集成中使用。有些人接受证明密钥,有些人则忽略它; Google似乎意识到了这一点,但未能验证证明密钥。我还没有找到任何关于谷歌的提及。
具体而言,当遵循OAuth 2.0的授权代码流程并将Google作为提供程序时,我们生成一个随机数,使用SHA256对其进行哈希处理,对其进行base64 URL编码,然后将其作为参数传递给https://accounts.google.com/o/oauth2/v2/auth& #34; code_challenge"和#34; code_challenge_method"按照规范。
端点接受参数并照常发出授权令牌。获取访问令牌时,我们使用code_verifier调用https://www.googleapis.com/oauth2/v4/token;端点返回以下HTTP 400错误,表明存在一些代码验证者的意识: { "错误":" invalid_grant", " error_description":"缺少代码验证程序。" }
developer.google.com/identity/protocols/OAuth2上的Google OAuth文档未提及任何这些参数; API操场不会扩展到使用OAuth2身份验证和令牌端点。任何见解将不胜感激。
答案 0 :(得分:1)
我使用AppAuth和Android clientId遇到同样的问题。为了解决这个问题,我必须在授权和令牌请求上设置匹配的“code_verifier”字段。您可以在这篇文章中找到更深入的描述:invalid_grant trying to get oAuth token from google