用于网站的基本Google登录代码无法在Internet Explorer 11中使用

S. *_*her 15 javascript internet-explorer google-openid google-oauth google-signin

我正在尝试使用Google登录网站(https://developers.google.com/identity/sign-in/web/)并注意到我的解决方案无法在Internet Explorer 11中使用.要尝试消除尽可能多的内容尽可能的因素,我根据Google提供的示例代码创建了一个简单的测试用例.

我已经在我的Windows 7 PC上的Chrome,Mac上的Chrome,Mac上的Safari,Mac上的Firefox和iPhone上的Safari上测试了它.它适用于所有这些(例如,当我点击登录按钮并选择/输入我的Google帐户时,它返回到页面,按钮显示,"登录").

但是,它不适用于PC上的Internet Explorer 11,或者奇怪的是,适用于iOS的Chrome.单击该按钮后,将打开一个窗口以允许我选择我的Google帐户,但在进行选择后,窗口将关闭并返回到页面,其中仍有一个按钮仍然显示"登录".

以下是示例代码:

<html>
<head>
<meta name="google-signin-client_id" content="61023618497-vqfbod57f26ncjl9d6firk3t09ve4tt3.apps.googleusercontent.com">
<script src="https://apis.google.com/js/platform.js" async defer></script>
</head>
<body>
<div class="g-signin2"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

关于可能发生的事情的任何想法?我已经四处寻找并且没有找到任何解决方案.

一个想法是将"accounts.google.com"添加到IE的可信站点.这没用.我也尝试通过https而不是http来访问该页面.这也没有什么不同.还有什么我应该尝试的吗?

ccm*_*ccm 1

确保您没有将 IE 11 配置为阻止所有第三方 cookie。

第三方 cookie 是必需的,而当第三方 cookie 被阻止时发生的用户体验(正如您所发现的)还有很多不足之处。不会向用户显示任何警告或错误消息。

您可以尝试在错误发生之前捕获它。通过尝试在第二个域(您控制的)上设置 cookie,然后发出第二个请求以确保设置 cookie,可以检测第三方 cookie 是否被阻止。您的服务器上需要一个脚本或其他东西来设置和检查 cookie(由于浏览器安全模型的原因,仅使用 JavaScript 无法完成此操作)。

  • 这不是问题,至少我所看到的不是问题。我在 IE 控制台中收到“SCRIPT5:访问被拒绝”错误,它引用了 Google iframe。更改 IE 以允许所有 cookie(低安全设置)无效。将服务站点、accounts.google.com 等添加到受信任站点没有任何效果。 (2认同)