欢迎大家,我们一直在深入阅读谷歌文档,从谷歌交换access_token,以便我们(Delphi)桌面应用程序从服务器端与谷歌进行单点登录。下面是我们首先发送的有效负载:
通常,在此之后,它会将我重定向到登录到我们的测试用户,然后根据文档,我们发送一个POST请求到端点令牌,以便获得access_token和refresh_token...:‘使用以下参数生成'https://oauth2.googleapis.com/token’,我们也按如下方式发送它:
client_id=1000217514248-t1lojs6f8ed7l9ocrpbm98leahtum8n1.apps.googleusercontent.com
grant_type=authorization_code
client_secret=******
code= 4/1AY0e-g4GlavO38PI5Oo3vq04Pc4lMWN77et-02UiVWOsT-IyRQnU1lq19qo
redirect_uri = urn:ietf:wg:oauth:2.0:oob
响应总是
{
"error_description": "Missing code verifier.",
"error": "invalid_grant"
}
我们也尝试发送客户端密钥id,这与我们的code_challenge有关吗?端点url和初始url是否正确?我们遗漏了什么?我们使用CEF4Delphi作为“类似浏览器的体验,以便用户输入他们的谷歌凭证。我们一直在读到这个:https://developers.google.com/identity/protocols/oauth2/web-server#offline我们也在尝试游乐场:https://developers.google.com/oauthplayground/我们在一个chrome浏览器中发送初始url,它生成了一个”代码“,在游乐场我们插入了代码,但仍然得到了同样的错误,缺少代码验证器。
谢谢你们
发布于 2021-03-18 18:01:25
你可以让URL编码很多值,但不要这样做。在开始添加其他所有内容之前,也要尝试使用基本调用。它应该可以帮助您找出您发送的哪个额外参数导致了您的问题。
https://accounts.google.com/o/oauth2/auth?client_id={clientid}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=profile&response_type=code还要确保客户端id来自已安装/其他类型的客户端
这也可能对Google 3 Legged OAuth2 Flow有所帮助
https://stackoverflow.com/questions/66688332
复制相似问题