バックボーン js アプリで google+ ログインを使用しようとしています。ユーザーフローは、
- ユーザーがログインボタンをクリックする
- これにより、ブートストラップ ( thttp://twitter.github.io/bootstrap/ ) モーダルが開き、google+ サインイン ボタン (facebook ログインなど) が表示されます。
- ユーザーは明示的に g+ サインイン ボタンをクリックしてサイトにログインする必要があります。
自動 g+ サインインを防ぐために、カスタム g+ サインイン ボタンと onclick を表示し、そのカスタム サインイン ボタンをコンテナーとして「gapi.signin.render」API を使用します。これは、サインイン ボタンが最初にクリックされたときに正常に機能しますが、ユーザーがログアウトして再ログインしようとすると、最初のクリックでは何も起こりませんが、2 回目のクリックで g+ サインインが 2 回トリガーされ、ユーザーがログアウトするたびに 1 ずつ増加します。そして、再ログインします。そして、g+ サインインが 2 回目のクリックでのみトリガーされるたびに。私のアプリは単一ページのアプリであるため、ログアウトとログインの間にリロードがないことに注意してください。サイトをリロードすると、最初は機能し、その後のサインインで問題が発生します。
注: g+ サインイン ボタンを表示するために使用するモーダル (およびその DOM) は、ログインが成功するたびに削除され、ユーザーがメインのログイン ボタンをクリックするたびに再作成されます。ログインに成功した後、g+ サインイン ボタンによって作成された iframe がまだ存在し、モーダルを再作成して「gapi.signin.render」API 呼び出しを呼び出すと、干渉している可能性があることに気付きました。
私が使用するコードは
バックボーン ビューでは、render メソッドは
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+ サインインの呼び出しがキューに入れられる理由や、シナリオの実装方法について何か考えはありますか?
ありがとう