APIは、ユーザーが[拒否]ボタンをクリックしたときを検出するメカニズムを提供しますが、ユーザーが突然ポップアップウィンドウを閉じた(またはWebブラウザを終了した、等々)。 拒否条件は、範囲を狭めてユーザーに再度プロンプトを表示する場合(たとえば、「電子メール」を要求したがプロファイルのみが必要で、ユーザーに電子メールを送信せずに続行させる場合など)に提供されます。
function onSignInCallback(authResult) {
if (authResult['error'] && authResult['error'] == 'access_denied') {
// User explicitly denied this application's requested scopes
}
}
あなたは窓があったかどうかを検出することなく、サインインを実装することができるはずです。
サインインコールバックからの応答がエラーが含まれている場合は、access_denied
、それはユーザーがボタンを否定クリックを示しています閉まっている;これは実質的にall of the Google+ sample appsに示されています。つまり、スピナーを使用しないでください。ユーザーが正常にログインするまで認証されたUIを非表示にする必要があります。
ポップアップクローズの検出を実装することは推奨されませんが、
var lastOpenedWindow = undefined;
window.open = function (open) {
return function (url, name, features) {
// set name if missing here
name = name || "default_window_name";
lastOpenedWindow = open.call(window, url, name, features);
return lastOpenedWindow;
};
}(window.open);
var intervalHandle = undefined;
function detectClose() {
intervalHandle = setInterval(function(){
if (lastOpenedWindow && lastOpenedWindow.closed) {
// TODO: check user was !authenticated
console.log("Why did the window close without auth?");
window.clearInterval(intervalHandle);
}
}, 500);
}
注私はそれを実現してきたように、この機構は競合状態に信頼性がないと対象であること:detect in window.unloadそして、グローバルwindow.open
呼び出しをオーバーライドしたり、ウィンドウがユーザ認証なしに閉鎖されたかどうかをポーリングするようにあなたが何かを行うことができます。
こんにちはディープ.. uが、このための任意のslolutionを取得しましたか? – Warrior