2015-10-15 34 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,但它的所有规范化,所以我认为这将工作你呢。

我希望这有助于!