我尝试通过Google OAuth 2.0对我的桌面应用程序进行身份验证。不幸的是,每次调用https://oauth2.googleapis.com/token
端点时都会收到以下错误:
{
"error": "invalid_request",
"error_description": "You can't sign in to this app because it doesn't comply with Google's OAuth 2.0 policy for keeping apps secure. You can let the app developer know that this app doesn't comply with one or more Google validation rules."
}
根据Google Cloud Console进行项目设置:
***发布状态:**测试中
- 通过电子邮件添加测试人员
- 已创建应用类型桌面应用的OAuth客户端ID
我不知道我做错了什么。前几步-打开浏览器并使用帐户登录,即注册测试人员-工作完美。这是通过以下URL完成的:
https://accounts.google.com/o/oauth2/v2/auth/oauthchooseaccount?response_type=code&client_id=<client-id>&redirect_uri=http%3A%2F%2Flocalhost%3A8080&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform.read-only&access_type=offline&include_granted_scopes=true&service=lso&o2v=2&flowName=GeneralOAuthFlow
正如您所看到的,我将http://localhost:8080
设置为redirect_uri
。本地Web服务器正在该端口上运行,最终-在浏览器中登录后-我得到code
,但使用必要的表单参数调用https://oauth2.googleapis.com/token
端点导致前面提到的400错误。
1条答案
按热度按时间bq8i3lrv1#
我找到了解决方案。我的桌面应用程序使用Ktor,这是我向
https://oauth2.googleapis.com/token
发送请求时使用的代码:问题是:我的
redirect_uri
。我传递它已经编码,所以我的http://localhost:8080
变成http%253A%252F%252Flocalhost%253A8080
而不是http%3A%2F%2Flocalhost%3A8080
(双重编码)导致“400 - Bad Request”错误。