2013-03-07 4 views
9

Для справки, здесь поток Google+, что я работаю с:Google OAuth2 Вход с AngularJS обратного вызова

https://developers.google.com/+/web/signin/server-side-flow

  1. Пользователь нажимает на кнопку входа. Запрос авторизации отправляется на серверы OAuth Google,
  2. диалог
  3. OAuth инициируется для пользователя
  4. access_token, id_token и одноразовый код возвращаются
  5. Клиент посылает id_token и код сервера
  6. обменов один сервер -время код access_token
  7. Google возвращает access_token
  8. сервер должен подтвердить «полностью вошли в» Клиенту

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

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

Знак в кнопки здесь:

https://developers.google.com/+/web/signin/server-side-flow#step_4_add_the_sign-in_button_to_your_page

<!-- Add where you want your sign-in button to render --> 
<div id="signinButton"> 
    <span class="g-signin" 
    data-scope="https://www.googleapis.com/auth/plus.login" 
    data-clientid="YOUR_CLIENT_ID" 
    data-redirecturi="postmessage" 
    data-accesstype="offline" 
    data-cookiepolicy="single_host_origin" 
    data-callback="signInCallback"> 
    </span> 
</div> 
<div id="result"></div> 

Параметр данных обратного вызова позволяет мне определить функцию, но я могу только получить его на работу на глобальных функций.

Единственное, что я могу придумать, это заставить AngularJS постоянно проверять сервер на наличие обновлений на всякий случай, когда пользователь входит в систему, но мне было интересно, есть ли способ сделать эту работу внутри структуры событий так, чтобы все мгновенно.

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

ответ

11

После кучу поисков, я, наконец, нашел то, что нужно здесь:

https://developers.google.com/+/web/signin/#javascript_api

я не мог использовать данные, атрибуты для выполнения того, что мне было нужно. Мне нужно было отобразить кнопку вручную, используя javascript API.

+0

Как вы его решили? Я попытался передать функцию в качестве ссылки на callbalck, но не работает. – vintem

+0

@VinTem Ключ для меня передавал строку, представляющую идентификатор элемента, а не элемент угловой (jqlite). – alalonde

+0

Чтобы сделать это еще проще, я нашел эту симпатичную небольшую угловую директиву, которая выполняет работу по созданию кнопки google plus, открывая окно и сохраняя токен доступа в orgin-окне, которое затем вы можете отправить на свой сервер, чтобы получить информацию о пользователе. https://github.com/sirkitree/angular-directive.g-signin – craigvl