Google Oauth2 同意屏幕 "Allow" 按钮已为 DELPHI 应用禁用

Google Oauth2 Consent Screen "Allow" button disabled for DELPHI app

谁能帮我看看为什么下面屏幕中的“允许”按钮被禁用了?我们正在使用 Delphi 应用程序,以便让用户使用 delphi 中内置的 TWebBrowser 以 google 单点登录来启动该过程。这是我们的有效载荷的样子:(有没有办法绕过此检查?也许将其他参数发送到 url 请求?或其他想法我们如何使用 client_id 验证 google ..ETC。 ) 我们一直在 Whosebug 中阅读类似的帖子,但没有解决方案。 谢谢

https://accounts.google.com/o/oauth2/auth?
client_id=1000217514248-pqeu5oqj3easr************************&
redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob
&response_type=code&
state=995F6663-D8FE-4***************&
scope=openid+email
&code_challenge=0C336C62-1B4E-49F7-*************&
login_hint=test%40test.be
&hd=test.be&
as=S-737348098%3A1615472*****6&flowName=GeneralOAuthFlow

您需要确保在用户安装的浏览器上打开浏览器window。

您无法从任何类型的嵌入式浏览器或 iframe 打开同意屏幕。您需要在用户安装的浏览器

中打开一个新的window

我们停止使用嵌入式浏览器...我们使用常见的 Google 服务,以便从默认浏览器弹出窗口以便登录。当前 DELPHI 版本使用 Internet Explorer 11 作为内部浏览器,我相信 delphi 的新版本将 Edge 作为内部浏览器,这不会有禁用按钮。

我以前也遇到过同样的问题。 Google 正在检测一个旧的和不安全的浏览器,将不允许授权继续。

我最终为此创建了一个 TCustomAuthenticator 后代 class。这应该适用于 Delphi.

的旧版本

它实现了一个 OAuth2 验证器:

  • 允许通过外部浏览器授权
  • 使用 PKCE 流程增加安全性
  • 过期时生成新令牌(使用刷新令牌)

在存储库中也有一个演示应用程序。

喜欢的可以随意使用: https://github.com/imperyal/delphi-google-oauth2