我有一个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在侦听的地址和端口?