我有一个使用Google Oauth2进行用户身份验证的Window Forms应用程序。 在Google控制台中,我使用学校的电子邮件创建了一个项目,这意味着它有一个组织,并且我将项目设置为“内部”,这意味着我不需要验证该应用程序(如果输入错了,请纠正我)。 我没有启用任何库API,因为我使用的唯一作用域是“ openid电子邮件配置文件”。
去年,该应用程序完美运行。用户可以进行身份验证,并且该应用可以从Google获取访问令牌,然后与我的另一台服务器交换代码以访问其他API。 但是,我最近发现,同意屏幕中的“允许”按钮和“拒绝”按钮也都被禁用。
我环顾四周,它不像“未经验证的应用程序”,因为它只是禁用了按钮,您可以在下面看到图片。
谁知道桌面应用程序的Google Oauth2发生了什么?我已阅读
在Google Oauth2文档中,我不知道它的确切含义。
答案 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
注意:
希望有帮助。