2015-12-29 34 views
6

まず、このガイドhttps://developers.google.com/identity/sign-in/web/とこのリファレンスhttps://developers.google.com/identity/sign-in/web/referenceに従っています。Google api auth2 signOutが動作しない

しかし、windowで宣言されたコールバックを使用する代わりに、gapi.signin2.render機能を使用して、ボタンをレンダリングし、角度コントローラでハンドラをアタッチしました。

ログインはgapi.auth2.getAuthInstance().signOut()を呼び出してログアウトしようとするとうまくいきますが、問題はありません。

accounts.google.comのsessionStorageがまだ存在していることがわかりました。その理由は、ログイン画面でボタンを再度レンダリングすると自動的にサインインするためです。

私はsignOut()が完了した後に何が起こるか見てみました:

gapi.auth2.getAuthInstance().signOut().then(function() { 
    console.log(gapi.auth2.getAuthInstance().isSignedIn.get()); 
    // prints 'true' 
}); 

私もそれがアクセス権を取り消すことを知って、disconnect()代わりのsignOut()を呼び出してみました、それはのsessionStorageからトークンを削除しますが、ユーザーセッションがありますまだそこにいる。一度ページをリロードすると消えてしまいます。

は、ここに私の完全なコードです:

$scope.logout = function() { 
    //... 
    gapi.auth2.getAuthInstance().signOut().then(function() { 
     console.log(gapi.auth2.getAuthInstance().isSignedIn); 
    }); 
}; 

$scope.processAuth = function(authResult) { 
    console.log("success"); 
    if(authResult.getAuthResponse().id_token) { 
    // backend calls 
    } 
}; 

$scope.renderSignInButton = function() { 
    console.log(gapi.auth2); 
    gapi.signin2.render('signInButton', 
    { 
     'onsuccess': $scope.processAuth, // Function handling the callback. 
     'onfailure': $scope.signinFailed, // Function handling the callback. 
     'clientid': 'asdasdasd.apps.googleusercontent.com', 
     'scope': 'https://www.googleapis.com/auth/userinfo.email', 
     'cookiepolicy': 'single_host_origin' 
    } 
); 
}; 

$scope.renderSignInButton(); 
+0

私はあなたが持っているのと同じ循環路(コードニター、角度とGoogleログインのあるサイト)を持っていますが、私はアクセスを削除することに問題はありません。あなたのusserセッションがそこに残っていると言うと、サイトのカスタムセッションかgoogleの認証インスタンスかを意味しますか? これは私のコードで、うまく機能しています。 'function googleSignOut(){ \t \t var auth2 = gapi.auth2.getAuthInstance(); \t \t auth2.signOut()。次に(function(){myPostToDeleteMySiteSession();}); \t \t auth2.disconnect(); \t \t \t \t} – UrielUVD

答えて

0

それはAUTH2オブジェクトがロードされていないことを発生することがあります。 (どちらの問題も問題の原因となります)。

次のスニペットは、この特定の問題を解決します。

if(!gapi.auth2){ 
    gapi.load('auth2', function() { 
     gapi.auth2.init(); 
    }); 
} 
関連する問題