谷歌登录时未触发回调

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,请在浏览器的控制台中查看

【讨论】:

以上是关于谷歌登录时未触发回调的主要内容,如果未能解决你的问题,请参考以下文章

与会者在使用服务帐户、谷歌日历 API 创建活动时未收到会议邀请

Angular 5 路由器在谷歌登录回调中无法正常工作

谷歌地图 fitBounds 回调

初始化地图时未出现谷歌地图标记

刷新谷歌访问令牌时未授权_客户端

Angular 谷歌地图地理编码回调