Вот простой пример моей проблемы.
Я использую кнопку входа в систему по умолчанию, следуя руководству, найденному здесь. Я включил все ресурсы, требуемые в Угловом приложении. Кнопка включена в представление, содержащее параметры входа.
<script src="https://apis.google.com/js/platform.js" async defer></script>
<meta name="google-signin-client_id" content="YOUR_CLIENT_ID.apps.googleusercontent.com">
<div class="g-signin2" data-onsuccess="onSignIn"></div>
При загрузке этого частичного представления с начальной загрузкой сайта все работает замечательно.
Когда частичное представление, содержащее кнопку, загружается после начальной загрузки страницы (например, когда кто-то переходит на страницу регистрации после начальной загрузки), кнопка не отображается. Очевидно, что что-то происходит автоматически при нажатии кнопки, которую мне нужно запускать вручную, когда кнопка доступна только позже, но я не вижу никакой документации по этому поводу, когда вы используете кнопку по умолчанию. Есть ли функция на щели, которую мне нужно вызвать, чтобы подключить кнопку?
Я не могу понять, почему у меня так много проблем с google oauth. Я чувствую, что у меня отсутствует базовая концепция, которая делает невозможным что-то выяснить самостоятельно, поэтому, если есть ресурс, который вы бы предложили, я прочитал, чтобы действительно получить его (особенно, когда речь заходит об интеграции в угловое приложение) Я был бы очень благодарен за указатель.
http://jsfiddle.net/sonicblis/12jpL138/3/
Ключ состоит в том, чтобы использовать gapi.signin2.render
для создания кнопки, которая, кстати, также позволяет вам функционировать в рамках углового контроллера, который является прекрасным.
Сделав кнопку заполнитель таким образом:
<div id="googleButtonPlaceholder"></div>
Затем я могу использовать функцию рендеринга gapi
чтобы ссылаться на нее, и gapi
ее все, что вызывает все автоматические auth файлы, которые библиотека автоматически выполняет для входа пользователя в систему и чего-то еще. Это значительно упрощает мои угловые приложения.
$window.gapi.signin2.render('googleButtonPlaceholder', {
'scope': 'https://www.googleapis.com/auth/plus.login',
'width': 200,
'height': 50,
'longtitle': true,
'theme': 'dark',
'onsuccess': $scope.federateWithGoogle
});