2015-04-05 55 views
0

我有一個子域上的api:api.exemple.com用symfony2和我在exemple.com上的主應用程序(SPA-AngularJs)編寫。子域和oauth上的API

我想允許用戶鏈接他們的facebook帳戶與他們的本地帳戶。我不知道如何繼續以通過我的應用程序進行身份驗證並使用第三方oauth提供程序。

你有什麼線索嗎?

謝謝

回答

1

在角端,打開一個新的窗口中啓動,併發送您的OAuth處理GET請求:

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 API網站,然後重定向到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(); 
}; 

容易吧?那麼不是真的,但它的作品。在我的情況下,我右轉和:

POST /auth/tokens/oauthToken 

得到真正的應用程序令牌。這樣我的oauth服務可以用於多個應用程序。

+0

謝謝。這正是我期待的! – user3100287 2015-08-20 20:49:29