2014-01-04 3 views
3

У меня развернута кнопка входа в Google+, теперь я должен предоставить кнопку выхода, перед этим мне нужно знать, будет ли пользователь по-прежнему входить в систему, с помощью которого я могу показать или скрыть эту кнопку.API Google+ JavaScript: как определить статус входа пользователя?

Я нашел эту документацию: gapi.auth.checkSessionState (sessionParams, обратного вызова): https://developers.google.com/+/web/api/javascript?hl=en#gapiauthchecksessionstatesessionparams_callback

Может кто-то демо, как его использовать?

Большое спасибо.

ответ

4

Вам не нужно использовать отдельный вызов функции для определения пользователя подписан в состоянии, если вы уже добавили кнопку входа. Обратный вызов кнопки входа активируется либо при входе в систему, когда загружается страница, либо в любое время, когда изменяется статус входа пользователя. Триггер загрузки страницы (немедленный режим) также поможет указать, является ли пользователь пользователем входа в систему Google или нет.

См. monitoring the user's signed in status, где показаны различные поля статуса, которые вы можете проверить (вход в систему Google, вход в приложение или вход в систему).

-10

Я не уверен, что Google Plus, но вам нужно проверить, если $_SESSION переменная, которая имеет информацию о пользователе isset()

if (isset($_SESSION['user'])) 
    //logout 

, но если вы хотите сделать кнопку выхода из системы, просто связать его на страницу logout.php

logout.php

session_start(); 
session_destroy(); 
+1

привет, спасибо за ваш ответ, я говорю о «Google + клиент API. –

1

Это пример того, как использовать его:

gapi.auth.checkSessionState({client_id:'99999999999.apps.googleusercontent.com'}, signinCallback); 

где client_id является идентификатор вашего проекта на г + консоли. и siginCallback - это функция, которую я создал для проверки состояния.

ЭТО ОЧЕНЬ ВАЖНО заметить, что официальная документация апи говорит:

Если аргумент верно, входящий в комплект поставки session_state остается в силе. Если аргумент ложный, он больше недействителен, и приложение должно выполнить новый поток повторной авторизации с немедленным значением true, чтобы получить обновленный токен доступа или обнаружить несанкционированный или несуществующий сеанс входа в Google ,

Но когда я Получать ответ checkSessionState я получаю истинное значение, когда им подписаны и ложно, когда им подписан. Я не знаю, если произошла ошибка в документации, но вы можете попробовать сами.

Надеюсь, что это было полезно для вас. PD: предлоги для моего ужасного английского

+1

Будет здорово, если вы могли бы поставить ссылку на апи документацию, где ваша цитата из. – pie6k

1

От Google dev docs:

Если передать нулевым в sessionParams.session_state, вы можете проверить, если пользователь уже вошедшие в Google, были ли ранее утвержденными им вашего приложение.

Так что ваш код будет выглядеть следующим образом:

gapi.auth.checkSessionState({session_state: null}, function(isUserNotLoggedIn){ 
    if (isUserNotLoggedIn) { 
    // do some stuff 
    } 
}); 
+0

Это работает, но обратите внимание, что возвращаемое значение противоположно тому, что вы ожидаете! (Как было предложено в коде - 'isUserNotLoggedIn'.) – mjs

2
gapi.auth2.getAuthInstance().isSignedIn.get() 

Это возвращает булево

+0

это работает только при инициализации gapi. – aleXela

0

Adapted from Tom Anthony's Blog

Один простой способ можно использовать без использования в API чтобы узнать, зарегистрирован ли пользователь в Google + (или Google/Facebook/Twitter) заключается в попытке получить доступ к ресурсу, доступ к которому они смогут получить только при входе в систему. В приведенном ниже коде пытается загрузить ресурс изображения, для которого пользователь должен пройти аутентификацию для доступа. По умолчанию html <img> теги запускают onload(), если изображение успешно возвращено, но onerror() в противном случае.

<img style="display:none;" 
onload="function(){document.getElementById('signOutButton').style.visibility = 'hidden';}" 
onerror="function(){document.getElementById('signOutButton').style.visibility = 'visible';}" 
src="https://plus.google.com/up/?continue=https://www.google.com/intl/en/images/logos/accounts_logo.png&type=st&gpsrc=ogpy0" 
/> 
Смежные вопросы