2015-04-05 4 views
0

У меня есть api на субдомене: api.exemple.com написан с symfony2 и моим основным приложением на exampleple.com (SPA - AngularJs).API на субдомене и oauth

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

У вас есть ключ?

Спасибо

ответ

1

На угловом стороне, начните с открытия нового окна и отправить ваш обработчик 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 может использоваться для нескольких приложений.

+0

спасибо. Это именно то, что я искал! – user3100287

Смежные вопросы