На угловом стороне, начните с открытия нового окна и отправить ваш обработчик OAuth запрос получите:
self.oauthConnect = function(provider)
{
var url = apiPrefix + '/oauth/tokens/'. provider;
oauthWindow = $window.open(url,'_blank', 'height=600, width=600, top=100, left=300, modal=yes');
oauthWindow.focus();
};
Ваш PHP апи сайт перенаправляет на сайт провайдера OAuth (т.е. facebook). Мы используем новое окно клиента, поэтому наш SPA продолжает работать, несмотря на перенаправление. Затем провайдер представляет свой экран входа в систему и перенаправляет информацию о токенах oauth.
Ваш PHP-сайт api выполняет то, что ему нужно, и генерирует фактический токен авторизации (подсказка: используйте токен json web). Затем сайт возвращает html-страницу обратно в ваше угловое приложение.
<body>
<script>
window.opener.oauthCallback('<?php echo $oauthToken; ?>');
</script>
</body>
Ваш угловой контроллер (который открыл окно) затем будет вызываться с помощью маркера oauth.
$window.oauthCallback = function(oauthToken)
{
oauthWindow.close();
oauthWindow = null;
authManager.oauthToken = oauthToken;
self.oauthSubmit();
};
Easy right? Ну не совсем, но это работает. В моем случае я поворачиваю направо и:
POST /auth/tokens/oauthToken
, чтобы получить реальный токен приложения. Таким образом, моя служба oauth может использоваться для нескольких приложений.
спасибо. Это именно то, что я искал! – user3100287