Выход из Google OAuth2.0 не работает на локальном хосте, но работает в консоли

Я использую Google Auth Login для своего приложения. Моя кнопка SignIn находится на странице входа в систему, а мой выход из системы является частью моего заголовка, который включен во все мое приложение. При нажатии на кнопку выхода из системы я не могу вывести пользователя из своего приложения.

Код Login.tpl (который содержит кнопку входа)

<div align="middle" class="g-signin2" data-onsuccess="onSignIn"></div>
<meta name="google-signin-client_id" content="CLIENT_ID">

Я могу войти в систему, но не могу выйти из системы. Кнопка выхода из системы является частью файла header.tpl, который включен во все файлы, но я получаю сообщение об ошибке, выделенное жирным шрифтом выше.

Код заголовка.tpl

<meta name="google-signin-client_id" content="CLIENT_ID">

<a href="/users/auth/login" class = "logout"><i class="fa fa-sign-out pull-right"></i> Log Out</a>

Мой JS-код

    $(".logout").click(function(event) {
event.preventDefault();
gapi.load('auth2', function () {
       var auth2 = gapi.auth2.init({
           client_id: 'CLIENT_ID',
           cookiepolicy: 'single_host_origin'
       });
       auth2.then(function(){
            // this get called right after token manager is started
            auth2.signOut();
            console.log('User signed out.');
       });
    });
window.location = $(this).attr('href');
});

Код никогда не входит в блок, в котором определен выход, и, следовательно, я ничего не получаю в консоли.

Однако, если я запускаю этот код в консоли, пользователь успешно выходит из системы, но это не работает в приложении, когда я запускаю его на локальном хосте.

Любые выводы будут высоко оценены.


person Shivanshu Gupta    schedule 09.01.2017    source источник


Ответы (2)


Я нашел решение, похоже, вы можете вызывать метод signOut только после того, как сработает signinCallback. Насколько я могу судить, единственный способ запустить signinCallback — это разместить на странице кнопку входа.

Сохранение скрытой кнопки входа в систему, где написана моя кнопка выхода, помогло мне.

Включил это в header.tpl, где написана моя кнопка выхода

    <div style = "display:none" align="middle" class="g-signin2" data-cookiepolicy='single_host_origin' data-onsuccess="onSignIn"></div>
person Shivanshu Gupta    schedule 10.01.2017

Мне удалось заставить его работать на локальном хосте с помощью следующего кода:

auth2.signOut().then(function () {
   auth2.disconnect();
   gapi.auth2.getAuthInstance().currentUser.get().reloadAuthResponse();
});

Ознакомьтесь с обсуждением на этой странице github.

person hoekma    schedule 16.06.2017