Google Oauth2同意屏幕“允许”按钮已禁用

时间:2020-06-16 04:40:36

标签: winforms google-api google-oauth google-authentication

我有一个使用Google Oauth2进行用户身份验证的Window Forms应用程序。 在Google控制台中,我使用学校的电子邮件创建了一个项目,这意味着它有一个组织,并且我将项目设置为“内部”,这意味着我不需要验证该应用程序(如果输入错了,请纠正我)。 我没有启用任何库API,因为我使用的唯一作用域是“ openid电子邮件配置文件”。

去年,该应用程序完美运行。用户可以进行身份​​验证,并且该应用可以从Google获取访问令牌,然后与我的另一台服务器交换代码以访问其他API。 但是,我最近发现,同意屏幕中的“允许”按钮和“拒绝”按钮也都被禁用。

我环顾四周,它不像“未经验证的应用程序”,因为它只是禁用了按钮,您可以在下面看到图片。

谁知道桌面应用程序的Google Oauth2发生了什么?我已阅读

this line在Google Oauth2文档中,我不知道它的确切含义。

Allow button disabled

3 个答案:

答案 0 :(得分:0)

以下问题的答案:注意:已安装的应用程序或设备不支持增量授权。我不知道这到底是什么意思。

在请求用户访问用户数据或其他资源的权限时,您可以在初始请求中预先请求所有范围,或者仅在需要时使用incremental authorization请求范围。在使用增量授权的情况下,您的应用程序最初仅请求启动应用程序所需的作用域,然后在需要新权限的情况下(在确定向用户请求请求的原因中)请求其他作用域。

已安装的应用程序(例如Win Forms应用程序)不支持该功能。只需立即请求所有范围,然后重试。

针对实际问题的可能解决方案

想法1:

尝试启用“安全性较低的应用程序”选项,有关更多信息,请参见:Less secure apps & your Google Account

想法2:

内部应用程序仅可与同一G Suite域中的用户一起使用,并且该应用程序与您所有用户所属的Cloud Organization关联,因此您无需进行验证。

我会仔细检查您是否已登录corect gsuite帐户。

答案 1 :(得分:0)

在Internet上进行了更多研究之后,原因是Google更新了反网络钓鱼协议“ MITM-中间人”,因此像Winform中的webbrowser控件这样的嵌入式Web浏览器现在不能再执行Oauth了,因为无法保护令牌。 您可以在下面的链接中阅读 https://security.googleblog.com/2019/04/better-protection-against-man-in-middle.html https://developers.googleblog.com/2016/08/modernizing-oauth-interactions-in-native-apps.html

为解决此问题,我使用设备的Web浏览器而不是Web。我使用来自这个github的代码 https://github.com/googlesamples/oauth-apps-for-windows

我要结束这个问题。

答案 2 :(得分:0)

我认为您应该阅读这篇文章: Use latest version of Internet Explorer in the webbrowser control

简短地: 您应该将Internet Explorer的默认仿真模式从默认值(即IE7)更改为IE11。

为此,您应该创建以下注册表值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"yourappname.exe"=dword:00002af8

或者如果您在64位操作系统上运行32位应用程序:

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"yourappname.exe"=dword:00002af8

注意:

  1. “ yourappname.exe”是提示嵌入式浏览器的可执行文件的名称(无完整路径)。
  2. 要编辑注册表,您需要管理员权限。因此,您需要安装程序才能在客户的计算机中进行此修改。

希望有帮助。

相关问题