我正在尝试使用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>
有关可能发生的事情的任何想法?我四处寻找并没有找到任何解决方案。
一个想法是将“accounts.google.com”添加到IE的可信站点。这没用。我也尝试通过https而不是http来访问该页面。这也没有什么不同。还有什么我应该尝试的吗?
答案 0 :(得分:3)
几个月后,我遇到了同样的问题。
如果你看一下:
https://developers.google.com/identity/sign-in/web/build-button
并尝试使用他们的演示按钮登录,它不适用于IE11(但它适用于我在不同操作系统使用的其他浏览器)。我找不到任何解决方案。
我将留下未来读者的评论,他将来会搜索同样的问题。如果Google上的演示按钮不起作用,她至少可以放心,问题可能不在她的代码中。 :)
答案 1 :(得分:1)
请确保您没有配置IE 11来阻止所有第三方Cookie。
第三方Cookie是必需的,第三方Cookie被阻止时发生的用户体验 - 正如您所发现的那样 - 还有很多不足之处。没有向用户显示警告或错误消息。
您可以尝试在错误发生之前捕获错误。可以通过尝试在第二个域(您控制的)上设置cookie然后再发出第二个请求以确保cookie已设置来检测第三方cookie是否被阻止。您需要服务器上的一个脚本或其他东西可以设置和检查cookie(由于浏览器安全模型,它不能仅使用JavaScript完成)。
答案 2 :(得分:1)
答案 3 :(得分:0)
我努力让这个例子在localhost上工作,但是只要我将它部署到真实的URL,就可以了。