在Google的Integrate Google Sign-In页面上,它的底部显示了如何使用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>
我一直在寻找,我无法使用PHP找到一种方法来签署用户。
我确实找到了如何完全退出Google的用户,但我不想这样做。我也知道我可以删除包含访问代码的$_SESSION
变量,但这仍然不是我想要的。
有谁知道如何使用PHP将某人从我的Google应用程序中记录下来?
答案 0 :(得分:4)
这应该有用,我用Mark Guinn的代码修复了问题,这是gapi.auth2.init();
方法的任务没有完成执行的事实。 .next()
它解决了这个问题。
<?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>
答案 1 :(得分:0)
JavaScript是操作不同于您的域的Cookie的唯一方法。
答案 2 :(得分:0)
如果您打算在服务器端auth2.signOut()
上签署用户,check out this code(虽然它是python,但您应该明白这一点。)
app.signOut = function() {
// Get `GoogleAuth` instance
var auth2 = gapi.auth2.getAuthInstance();
// Sign-Out
fetch('/signout', {
method: 'POST',
credentials: 'include'
}).then(function(resp) {
if (resp.status === 200) {
auth2.signOut()
.then(changeProfile);
} else {
console.error("couldn't sign out");
}
}).catch(function(error) {
console.error(error);
});
};
@app.route('/signout', methods=['POST'])
def signout():
# Terminate sessions
session.pop('id', None)
return make_response('', 200)
这取决于您如何构建会话,但您可以在signOut()
之前向服务器发送ajax请求。
答案 3 :(得分:0)
检查这对你有用
header('Location:https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://www.domain.com');
答案 4 :(得分:-1)
为什么不让你的注销脚本看起来像这样:
<?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>