2015-10-15 88 views
1

我有一個MEAN堆棧應用程序,使用FB登錄衛星。使用衛星與離子和快遞

$authProvider.facebook({ 
     clientId: '1625070294abcdef', 
     scope: 'user_friends' 
     }); 

這裏沒有其他自定義設置。 一旦FB認證對話框關閉,FB的響應(即用戶數據)就會發送到我的快遞服務器,以便我可以檢索長期令牌。

我的FB開發者門戶網站URL的設置是:

http://localhost:3000 

這也是在此我Express服務器正在監聽的地址。

到目前爲止好......所有作品......

現在我還創建一個應用程序離子..這將使用相同的快遞後端。

爲了執行FB登錄,我再次使用sateziller與離子。

satellizer被配置在如下的離子應用程式:

var commonConfig = { 
     popupOptions: { 
     location: 'no', 
     toolbar: 'no', 
     width: window.screen.width, 
     height: window.screen.height 
     }, 
    commongConfig: { 
     clientId: '1625070294abcdef', 
     responseType: 'token', 
     redirectUri: 'http://localhost:3000' 
    } 
    }; 

問題如下。 在離子應用程序中,FB驗證窗口打開。用戶認證..但現在不是關閉窗口..這同一個小窗口加載我的Angular網站(從我前面提到的MEAN網站)

這告訴我,在從FB驗證接收到令牌後,它發送到我的快遞服務器。現在,不要將長期令牌發回我的離子應用程序..快遞服務器正在發送整個Angular應用程序。

檢索Express服務器上長期令牌的代碼看起來是這樣的:

var accessTokenUrl = 'https://graph.facebook.com/oauth/access_token'; 

    var params = { 
    'client_id': req.body.clientId, 
    'redirect_uri': req.body.redirectUri, 
    'client_secret': conf.FACEBOOK_SECRET, 
    code: req.body.code 
    }; 
    console.log(params); 

    request.get({url: accessTokenUrl, qs: params}, function (err, response, token) { 
    if (err) { 
     callback(err); 
    } 
    var accessToken = qs.parse(token); 
... 
... 
retreive user details from FB using this accessToken (code hidden for sake of clarity 
.. 
.. 
    res.status(200).send({ 
    user: user.toJSON(), 
    token: token 
    }); 

    }); 

我相信我在這裏做一些基本的錯誤。

  1. 在一天結束時離子應用程序是一個網站(就facebook而言)?

  2. 我應該可以使用相同的快遞後端進行身份驗證,併爲我的網站和IONIC應用程序提供REST服務?

  3. 由於網站(角APP)是從在同一臺服務器擔任Express服務器..它不需要satellizer配置一個redirectUri參數。(默認情況下,這是該URI處expresss監聽)?

  4. 由於離子應用程序不會由快遞服務器提供服務..我們必須明確指定衛星配置中的重定向URI。 重定向URI應該是express在偵聽的地址和端口?

回答

0

有類似的問題,但你可能想看看離子。項目文件:

{ "app_id": "", "proxies": [ { path: "/api", "proxyUrl": "http://localhost:3000" } ] }

有了這一點,你可以設置你的$authProvider爲:

$authProvider.twitter({ url: '/api/user/twitter' });

然後創建在「/用戶/ Twitter的一個Express航線 - 當FB和Twitter或者等嘗試重定向到查詢者頁面,它會打到您的ionic.project代理並將其發送到Express/Sails/Server,並且您可以將該請求捕獲爲GET,處理它,創建用戶等。顯然,我的經驗是使用Twitter,但它的所有規範化,所以我認爲這將工作你呢。

我希望這有助於!