Javascript 退出谷歌&x2B;使用JS

Javascript 退出谷歌&x2B;使用JS,javascript,google-plus,Javascript,Google Plus,我正试图在我的网站上设置一个Google+登录按钮。这个按钮很好用。我还有一个注销按钮。当用户登录时,我隐藏“登录”按钮。我的代码如下: <span id="signinButton"> <span class="g-signin" data-callback="signinCallback" data-clientid="******************" data-cookiepolicy="sin

我正试图在我的网站上设置一个Google+登录按钮。这个按钮很好用。我还有一个注销按钮。当用户登录时,我隐藏“登录”按钮。我的代码如下:

<span id="signinButton">
    <span
        class="g-signin"
        data-callback="signinCallback"
        data-clientid="******************"
        data-cookiepolicy="single_host_origin"
        data-requestvisibleactions="http://schema.org/AddAction"
        data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email">
    </span>
</span> &nbsp;&nbsp;&nbsp;&nbsp;
<button id="revokeButton" onclick="gapi.auth.signOut()">Sign Out</button>

<script>
    function signinCallback(authResult) {
        if (authResult['status']['signed_in']) {
            document.getElementById('signinButton').setAttribute('style', 'display: none');
            console.log("User successfully logged in!!");
        } else {
            console.log('Sign-in state: ' + authResult['error']);
        }
    }
</script>
<script>
    function disconnectUser(access_token) {
        var revokeUrl = 'https://accounts.google.com/o/oauth2/revoke?token=' +
                access_token;

        // Perform an asynchronous GET request.
        $.ajax({
            type: 'GET',
            url: revokeUrl,
            async: false,
            contentType: "application/json",
            dataType: 'jsonp',
            success: function(nullResponse) {
                document.getElementById('signinButton').setAttribute('style', 'display: display');
                // The response is always undefined.
                console.log("Success in logging out!");
            },
            error: function(e) {
                // Handle the error
                console.log(e);
                // You could point users to manually disconnect if unsuccessful
                // https://plus.google.com/apps
            }
        });
    }
</script>

退出
函数signinCallback(authResult){
如果(authResult['status']['signed_in']){
document.getElementById('signinButton').setAttribute('style','display:none');
console.log(“用户成功登录!!”;
}否则{
log('登录状态:'+authResult['error']);
}
}
功能断开连接用户(访问令牌){
var revokeUrl=https://accounts.google.com/o/oauth2/revoke?token=' +
接入令牌;
//执行异步GET请求。
$.ajax({
键入:“GET”,
url:revokeUrl,
async:false,
contentType:“应用程序/json”,
数据类型:“jsonp”,
成功:函数(空响应){
document.getElementById('signinButton').setAttribute('style','display:display');
//响应总是未定义的。
log(“成功注销!”);
},
错误:函数(e){
//处理错误
控制台日志(e);
//如果失败,您可以指示用户手动断开连接
// https://plus.google.com/apps
}
});
}

问题是当我使用gapi.auth.signOut()注销时。。。它将我注销,但在刷新时再次将同一用户登录到Google+。我如何允许其他人登录我的网站。我如何从谷歌完全注销用户。我不熟悉Javascript…举个例子会有帮助。

这个答案更像是一个笑话,但你为什么不尝试一种黑客方法,用
src
of
将隐藏的iframe添加到正文中,从用户的google帐户注销用户https://accounts.google.com/Logout

它将拒绝显示,因为X-Frame-Options设置为DENY,但实际上会将您注销

一个带有jquery的行程序:

$('<iframe style="display: none" src="https://accounts.google.com/Logout"></iframe>').appendTo(document.body);
$('').appendTo(document.body);

我想答案很简单。用户第一次登录时,未登录到我的站点。显然,用户必须登录。下一次页面刷新时,Google+会检查用户是否已登录任何Google服务,如gmail等。。如果答案为真,则保持用户登录。要检查这是否有效,请注销您的任何谷歌服务(gmail等),然后尝试使用Google+登录。它将要求提供凭据。因此,一旦用户登录到Google+,他/她不必每次都登录。

是否在页面加载时调用登录功能?否。只有在单击登录按钮时才调用。当我单击按钮时,会出现一个对话框并显示该对话框…这意味着前一个用户已登录。我的第一个问题是:是否打算将您的站点作为用户登录和注销的代理google+,还是您打算使用google+作为授权创建帐户以访问您的网站的方式?如果我去了someSite.com,用google+登录,然后退出该网站,我就不会指望自己的google+帐户真的被注销了。这可能是因为谷歌正在强制执行一项规则,第三方网站无法将用户从google+注销。在刷新后,必须有一些东西试图登录用户。如果您的页面上还有Google API javascript,请将其添加到您的问题中。好吧,我想我的下一个问题是,如果您没有捕获和保存数据以与您站点的唯一访问者关联,他们为什么要登录?在我看来,也许很天真,这是在无缘无故地屏蔽用户。是否打算授予g+用户以其他方式无法获得的特殊内容?不建议依赖黑客的副作用。这可能会在任何时候停止工作,使构建它的站点崩溃。当然不会。把它当作一个笑话,而不是一个解决办法。OP应该知道他所有的选择。不仅仅是正确的;)