谷歌登录时未触发回调
Posted
技术标签:
【中文标题】谷歌登录时未触发回调【英文标题】:Callback not fired on google-sign-in 【发布时间】:2016-07-14 18:00:32 【问题描述】:<html>
<head>
<meta name="google-signin-client_id" content="MY_CLIENT_ID.apps.googleusercontent.com" />
</head>
<body>
<div class="g-signin2" data-onsuccess="onSignIn"></div>
<script src="https://apis.google.com/js/platform.js" async defer></script>
<script type="text/javascript">
function onSignIn(googleUser)
console.log("Succesfully Singed in!!!");
</script>
</body>
</html>
通过以上内容,我可以看到一个 google-sign-in 按钮,该按钮打开一个弹出窗口,接受凭据并让我登录。但我希望在登录成功时触发 onSignIn 方法,这不会发生。 有没有人有这方面的指点?
使用 safari、chrome 和 firefox 浏览器在 osx 上的 apache 服务器上尝试过
【问题讨论】:
第一个脚本标签格式错误 您在控制台上看到任何错误吗? 没有错误。甚至onfailure等方法也不会触发。我应该包含除platform.js之外的任何api吗? 您是否包含 ? developers.google.com/identity/sign-in/web 您找到答案了吗?我看到了一个非常相似的问题。如果我第一次与用户登录,则不会调用 onSignIn。但是,当我将该用户注销并使用完全相同的用户登录时,它会被调用。 【参考方案1】:检查 Developers Console 并查看 授权重定向 URI 是否指向您正在运行 JavaScript 的源?
【讨论】:
没有。我没有设置任何重定向 URL。这应该重要吗?指南说它可以留空。 如果您指定 localhost,您可能需要检查“Authorized JavaScript origins”,您还需要指定一个端口。示例:localhost:5000 重定向 uri 是可选的,但来源是必需的。【参考方案2】:你应该在 head 标签中添加你的 platform.js 脚本
<html>
<head>
<meta name="google-signin-client_id" content="MY_CLIENT_ID.apps.googleusercontent.com" />
<script src="https://apis.google.com/js/platform.js" async defer> </script>
</head>
<body>
<div class="g-signin2" data-onsuccess="onSignIn"></div>
<script type="text/javascript">
function onSignIn(googleUser)
console.log("Succesfully Singed in!!!");
</script>
</body>
</html>
【讨论】:
这是为我做的 就我而言,问题在于浏览器扩展 Adblock / Ghostery。我需要禁用它才能获得响应。 我不得不禁用 Privacy Badger。【参考方案3】:在我的例子中,成功事件没有触发,因为我试图从页面中包含的外部 js 文件中连接一个函数。出于某种原因,只有当连接的函数出现在同一页面上时,回调才会起作用。
以前从未见过这样的事情。我想知道他们如何检查这一点。
【讨论】:
【参考方案4】:就我而言:The callback function was inside the body tag
.
如果在body标签中回调函数不起作用,将其移动到head标签中。
【讨论】:
【参考方案5】:现在回答太晚了,但我认为有人会需要这个:
记得在 google 控制台添加源 URI 如果您在终端上没有看到任何 onSignIn,请在浏览器的控制台中查看【讨论】:
以上是关于谷歌登录时未触发回调的主要内容,如果未能解决你的问题,请参考以下文章