javascript - 您如何检测您是否已使用 Google 登录 API 注销?

标签 javascript google-api google-api-client google-api-javascript-client

我正在使用适用于 JavaScript 的 Google 登录客户端 API。我正在处理的网站有两个相关页面。它有一个登录页面,它有一个用户配置文件页面。登录页面上显然有一个 Google 登录按钮。您应该只有在登录后才能查看您的个人资料页面。当用户在未登录的情况下进入他们的个人资料页面时,应该将他们重定向到登录页面。

这是我尝试过但没有奏效的方法:

// This does not work because this event is only fired when the user logs in or logs out, but not when the user is already logged out.
gapi.auth2.init().isSignedIn.listen(function(state) {
    if(!state) location.href = "/login/";
});

我也试过在脚本加载时检测用户的登录状态,但这也没有用。它总是重定向到登录页面,因为 Google API 永远无法在脚本加载完成时让用户登录。

此外,我尽量不在我的代码中使用 setIntervalsetTimeout,如果这是我唯一有效的选择,请通知我。

顺便说一句,我多次听说我可以在用户登录时设置一个变量,然后如果该变量为false,则直接重定向到登录页面。我什么时候检查所述变量的值?这将不起作用,因为它需要我使用 setTimeout 设置特定的延迟。 Google 的加载时间可能会有很大差异,因此我不会使用它。

最佳答案

我发现您可以使用这个简单的表达式来返回 truefalse,具体取决于用户是否在您的网站上登录了 Google。

gapi.auth2.init().isSignedIn.get()

关于javascript - 您如何检测您是否已使用 Google 登录 API 注销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43402843/

相关文章:

ruby-on-rails - Errno::EADDRNOTAVAIL 从 Docker 上的 Rails 向 api 发送请求时

android - 与 GoogleApiClient 连接,尽管它已经连接

android - GoogleApiClient : Games. API 和 Auth.GOOGLE_SIGN_IN_API 不能一起工作

node.js - 将 google-api-javascript-client 与 node.js 结合使用

javascript - 使用表单输入在 $.ajax() 方法中设置 var?

javascript - 在不使用窗口和文档对象的情况下在外部单击时隐藏 div

javascript - 如何仅使用 css 删除 django 表单中的默认值 '0'

javascript - 在 # 符号后检测 url 更改

c# - 如何在 MVC 中解决 'The access token has expired but we can' t 刷新它'

php - 使用 Zend Gdata 在 Google 电子表格中插入行时出错