使用 passport.js、sails.js API 和 ember.js 登录 Facebook

Facebook login with passport.js, sails.js API and ember.js

我正在设置这个 Sails 项目,我在其中使用 PassportJS,通过 sails-generate-auth, and JWTs - using this 作为指南 - 登录。我正在尝试尽可能多地将 api 与 Ember 应用程序分离,以便我可以将相同的 API 用于 iOS 等。由于护照使用回调来处理 Facebook 身份验证,如何通过 AJAX 登录?

我能够像这样使用 AJAX GET 到 /auth/facebook 通过护照 js 成功登录 Facebook

var url = config.api + '/auth/facebook'
var controller = this;
Ember.$.get( url, function ( data ) {
  // This is never called because Facebook redirects
  localStorage.private_token = data.token;
  controller.transitionToRoute('profile', data.user);
});

但是当 Facebook 重定向时,它会返回到 API,而不是前端应用程序。但是,如果我将后端配置为在回调后重定向到前端应用程序,我就会依赖于我想要避免的前端应用程序。我以前从未做过 Facebook 身份验证,但我已经使用 API 令牌一段时间了。

有什么方法可以做我想做的事吗?或者我应该从 passport.callback 重定向到前端应用程序?

更新

经过更多搜索,我找到了这个答案:passport.js RESTful auth

看来我无法实现我想要的,因为 Facebook 仅公开基于重定向的身份验证,而不是异步或 JSON 身份验证。很高兴知道...如果您愿意,请标记为重复。

Your application must also implement a redirect URL, to which Facebook will redirect users after they have approved access for your application.

来自 Passport.js Facebook guide(查看配置)。

因此您必须将 ember 应用 state/url 设置为重定向 url 例如http://localhost/#/welcome