Javascript 退出谷歌&x2B;使用JS
我正试图在我的网站上设置一个Google+登录按钮。这个按钮很好用。我还有一个注销按钮。当用户登录时,我隐藏“登录”按钮。我的代码如下: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
<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>
<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应该知道他所有的选择。不仅仅是正确的;)