Я использую вход G+ для своего веб-сайта и обнаружил эту проблему.
На моем веб-сайте есть панель инструментов (она отображается с помощью Javascript) и кнопка входа в G+, поэтому я прикрепляю API G+ Javascript в файле панели инструментов.
[панель инструментов-notlogin.php]
<script>
(function() {
var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
po.src = 'https://apis.google.com/js/plusone.js?onload=render';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
})();
function render ()
{
var config = {
"callback": "loginCallback",
"clientid": "xxxxxxxxx.apps.googleusercontent.com",
"cookiepolicy": "single_host_origin",
"requestvisibleactions": "http://schemas.google.com/AddActivity",
"scope": "https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.me https://www.googleapis.com/auth/userinfo.email"
};
$('#googleCustomLoginBtn .buttonText').text('Login with Google');
gapi.signin.render ("gplusLoginBtn", config);
}
</script>
Когда панель инструментов (с G+ JS API) загружается, она вызывает функцию обратного вызова render() для рендеринга кнопки входа в G+. Это работает очень хорошо, поэтому моя панель инструментов переходит в состояние входа в систему (показывает профиль пользователя), а кнопка входа в G + исчезает (HTML заменен).
Когда пользователь выходит из системы, панель инструментов изменяет состояние, чтобы не входить в систему (HTML снова заменяется), он снова вызывает render(), и кнопка входа работает.
Но проблема в том, что когда я вхожу в этот раз, функция обратного вызова ( loginCallback() ) вызывается дважды. Похоже, что функция обратного вызова снова связывается. (Я пытаюсь не вызывать render() во второй раз, но кнопка входа не работает.)
Есть ли способ это исправить? Спасибо.