Javascript 谷歌登录API-如何使用PHP注销某人?

Javascript 谷歌登录API-如何使用PHP注销某人?,javascript,php,google-signin,google-api-php-client,Javascript,Php,Google Signin,Google Api Php Client,在谷歌的页面底部有一个部分,展示了如何使用Javascript注销用户: <a href="#" onclick="signOut();">Sign out</a> <script> function signOut() { var auth2 = gapi.auth2.getAuthInstance(); auth2.signOut().then(function () { console.log('User signed o

在谷歌的页面底部有一个部分,展示了如何使用Javascript注销用户:

<a href="#" onclick="signOut();">Sign out</a>
<script>
  function signOut() {
    var auth2 = gapi.auth2.getAuthInstance();
    auth2.signOut().then(function () {
      console.log('User signed out.');
    });
  }
</script>

函数签出(){
var auth2=gapi.auth2.getAuthInstance();
auth2.signOut().then(函数(){
log('User signed out');
});
}
我一直在寻找,但我找不到一种方法来像这样使用PHP注销用户

我确实发现了如何让用户完全退出谷歌,但我不想这样。我还知道我可以删除保存访问代码的
$\u SESSION
变量,但这仍然不是我想要的


有人知道我如何使用PHP将某人从我的Google应用程序中注销吗?

JavaScript是为不同于您的域操作Cookie的唯一方法。

如果您想让用户在服务器端的
auth2.signOut()
上注销(虽然是python,但您应该知道)


这取决于您如何构造会话,但您可以在
注销()之前向服务器发送ajax请求。

检查此项,它将对您起作用

header('Location:https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.domain.com');

为什么不让您的注销脚本看起来像这样:

<?php
session_start();
session_unset();
session_destroy();
?>
<html>
   <head>
     <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
   </head>
   <body>
     <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script>
     <script>
       window.onLoadCallback = function(){
         gapi.load('auth2', function() {
           gapi.auth2.init();
           var auth2 = gapi.auth2.getAuthInstance();
           auth2.signOut().then(function () {
             document.location.href = 'login.php';
           });
         });
       };
     </script>
   </body>
 </html>

window.onLoadCallback=函数(){
load('auth2',function(){
gapi.auth2.init();
var auth2=gapi.auth2.getAuthInstance();
auth2.signOut().then(函数(){
document.location.href='login.php';
});
});
};

这应该行得通,我修复了Mark Guinn代码的问题,即
gapi.auth2.init()方法的任务未完成执行
.then()
'it解决了这个问题

<?php 
    session_start();
    session_unset();
    session_destroy();
?>
<html>
    <head>
        <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    </head>
    <body>
        <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script>
        <script>
            window.onLoadCallback = function(){
                gapi.load('auth2', function() {
                    gapi.auth2.init().then(function(){
                        var auth2 = gapi.auth2.getAuthInstance();
                        auth2.signOut().then(function () {
                            document.location.href = 'login.php';
                        });
                    });
                });
            };
        </script>
    </body>
</html>

window.onLoadCallback=函数(){
load('auth2',function(){
gapi.auth2.init(){
var auth2=gapi.auth2.getAuthInstance();
auth2.signOut().then(函数(){
document.location.href='login.php';
});
});
});
};

所以上面的脚本只是删除了cookie?javascript控制台中出现错误:
ReferenceError:找不到变量:gap
是否正在加载google api?您是否尝试过我的建议,使用window.load或onready处理程序?对,所以api没有加载。看起来您需要这样做:(同时更新我的答案)现在它返回
TypeError:undefined不是对象(评估'gapi.auth2.getAuthInstance')
对不起,我以为您以前实际使用过这个库。。。请参见要发布的编辑。确保你在写着你的客户id的地方填写你的客户id。我希望我能投两次赞成票。找了这么久
<?php
session_start();
session_unset();
session_destroy();
?>
<html>
   <head>
     <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
   </head>
   <body>
     <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script>
     <script>
       window.onLoadCallback = function(){
         gapi.load('auth2', function() {
           gapi.auth2.init();
           var auth2 = gapi.auth2.getAuthInstance();
           auth2.signOut().then(function () {
             document.location.href = 'login.php';
           });
         });
       };
     </script>
   </body>
 </html>
<?php 
    session_start();
    session_unset();
    session_destroy();
?>
<html>
    <head>
        <meta name="google-signin-client_id" content="YOUR_CLIENT_ID">
    </head>
    <body>
        <script src="https://apis.google.com/js/platform.js?onload=onLoadCallback" async defer></script>
        <script>
            window.onLoadCallback = function(){
                gapi.load('auth2', function() {
                    gapi.auth2.init().then(function(){
                        var auth2 = gapi.auth2.getAuthInstance();
                        auth2.signOut().then(function () {
                            document.location.href = 'login.php';
                        });
                    });
                });
            };
        </script>
    </body>
</html>