16

我正在使用server-side flow将 Google+ 登录按钮添加到我的网站。这是我呈现登录按钮的方式:

<script type="text/javascript">
    (function () {
        var po = document.createElement('script');
        po.type = 'text/javascript';
        po.async = true;
        po.src = 'https://plus.google.com/js/client:plusone.js?onload=renderGPlus';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(po, s);
    })();
</script>

<script type="text/javascript">
    function renderGPlus() {
        gapi.signin.render('customGPlusBtn', {
            'callback': 'gPlusSignInCallback',
            'clientid': '<my_client_id>',
            'redirecturi': 'postmessage',
            'accesstype': 'offline',
            'cookiepolicy': 'single_host_origin',
            'requestvisibleactions': 'http://schemas.google.com/BuyActivity',
            'scope': 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email'
        });
    }
</script>

加载按钮后,它会立即检查用户是否已授权我的应用程序(立即模式)。如果用户之前授权了我的应用程序,页面底部会弹出一个通知栏,并显示“欢迎回来,您已经通过 Google+ 登录与此应用程序连接......”。

在此处输入图像描述

有没有办法阻止这条消息弹出?

4

4 回答 4

15

就在最近此页面上新接受的隐藏“Google 登录欢迎返回弹出窗口”的答案

window.___gcfg = { isSignedOut: true };

不再工作。

目标:在所有浏览器上“隐藏或禁止显示 Google+ 登录欢迎返回消息”。

请如果您一直在使用`

window.___gcfg = { isSignedOut: true };

抑制警告。经过认真的实验,我发现了这一点。

我会建议您使用此 iframe 版本来抑制网页上任何类型的 Google API 弹出窗口。

iframe 1:这会在您的网页上iframe[src^="https://apis.google.com"] {display: none;}隐藏来自 Google API 的所有弹出窗口。

iframe 2:iframe[src^="https://apis.google.com/u/0/_/sharebox"] {display: none;}这会隐藏您网页上弹出的所有 Google 交互式共享对话框。

iframe 3:iframe[src^="https://apis.google.com/u/0/_/widget/oauthflow/toast"] {display: none;}这会隐藏您网页上的所有“ Google 的欢迎返回消息”弹出窗口。

iframe 4:iframe[src^="https://apis.google.com/u/0/_/+1/"] {display: none;}这会隐藏您网页上的所有“ Google 的 +1 按钮”。

因此,对于这个特定问题,请在 HTML 页面的 Head 标记中执行此操作

 <style> `iframe[src^="https://apis.google.com/u/0/_/widget/oauthflow/toast` </style>

已经对其进行了测试,并且效果很好。

于 2013-12-14T13:12:26.547 回答
13

首先,该消息仅在用户第一次登录时出现,谷歌识别出特定的浏览器会话。换句话说,用户只有在关闭浏览器窗口并开始新的浏览器会话时才会看到该消息。

每当您看到授权结果成功返回并将用户更新到授权状态​​时,您都应该授权用户。因此,只要出现此消息,用户就会自动登录。

因为出现的消息是为了通知您的用户他们已自动登录,所以您可能不应该禁止显示此消息,除非您有意为您明确管理其会话的用户执行此操作。

但是,如果您已实现显式注销并正在管理用户的登录状态,则对 plusone.js 同步包含的以下代码更改将抑制 toast 消息。

<script src="https://apis.google.com/js/plusone.js">
  isSignedOut: true
</script>

另请注意,您不再需要管理用户的状态来注销用户。新方法gapi.auth.signOut将注销用户。您可以在此处查看注销演示

如果您正在执行异步包含,以下全局配置标志将抑制消息:

window.___gcfg = { isSignedOut: true };

更新:

正如Chimdi2000所指出的,这个解决方案在 Chrome 中不起作用。您可以添加以下 CSS 来隐藏生成的 iframe:

iframe[src^="https://apis.google.com"] {
  display: none;
}

由于他的回答比我的要完整得多并且解决了其他问题,请查看。

于 2013-06-18T17:59:20.073 回答
3

公认的答案是正确的方法,但如果出于其他原因您只想隐藏生成的 iframe,您可以使用 CSS 来实现:

iframe[src^="https://apis.google.com"] {
  display: none;
}
于 2013-11-29T09:35:00.320 回答
0

Chimdi2000的最后一个样式代码必须是:

<style>
iframe[src^="https://apis.google.com/u/0/_/widget/oauthflow/toast"] {
  display: none;
}
</style>

并且运行完美。

编辑 :

下面的编码也隐藏了登录按钮。

<style>
iframe[src^="https://apis.google.com"] {
    display: none;
}
</style>
于 2016-02-10T20:03:10.733 回答