我有一個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
});
});
我相信我在這裏做一些基本的錯誤。
在一天結束時離子應用程序是一個網站(就facebook而言)?
我應該可以使用相同的快遞後端進行身份驗證,併爲我的網站和IONIC應用程序提供REST服務?
由於網站(角APP)是從在同一臺服務器擔任Express服務器..它不需要satellizer配置一個redirectUri參數。(默認情況下,這是該URI處expresss監聽)?
由於離子應用程序不會由快遞服務器提供服務..我們必須明確指定衛星配置中的重定向URI。 重定向URI應該是express在偵聽的地址和端口?