我正在尝试在我的骨干 js 应用程序中使用 google+ 登录。用户流是这样的
- 用户单击登录按钮
- 这将使用 google+ 登录按钮(以及 facebook 登录等)打开一个引导程序(thttp://twitter.github.io/bootstrap/)模式
- 用户必须明确单击 g+ 登录按钮才能登录我的网站。
为了防止自动 g+ 登录,我所做的是显示一个自定义 g+ 登录按钮并在单击时使用带有该自定义登录按钮的“gapi.signin.render”api 作为容器。这在第一次单击登录按钮时工作正常,但是如果用户注销并尝试重新登录,则第一次单击没有任何反应,但在第二次单击时,g+ 登录被触发两次,并且每次用户注销时增加 1并重新登录。每次 g+ 登录仅在第二次点击时触发。请注意,我的应用程序是单页应用程序,因此在注销和登录之间没有重新加载。如果我重新加载该站点,那么它会在第一次运行时再次出现问题,随后的登录又会出现问题。
注意:我用于显示 g+ 登录按钮的模式(及其 DOM)在每次成功登录后都会被删除,并在每次用户单击主登录按钮时重新创建。我注意到在成功登录后,由 g+ 登录按钮创建的 iframe 仍然存在,并且当我再次重新创建模式并调用“gapi.signin.render”api 调用时可能会产生干扰。
我使用的代码是
在主干视图中,渲染方法具有
render: function() {
var thisV = this;
_.defer(function(){
gapi.signin.render('gSignIn', {
'callback': thisV.gPlusLoginCB,
'clientid': "clientID",
'requestvisibleactions': "http://schemas.google.com/AddActivity",
'scope': "https://www.googleapis.com/auth/plus.login",
'theme': 'dark',
'cookiepolicy': "single_host_origin"
});
});
}
在我的 html 模板中
<button id="gSignIn" class="btn gplogin">
<i class="icon-google-plus"></i>Login
</button>
关于 G+ 登录呼叫为何排队或如何实施我的方案的任何想法?
谢谢