2015-04-20 2 views
1

Я настраиваю этот проект Sails, где я использую PassportJS, через sails-generate-auth и JWTs - используя this в качестве справочника - для входа. Я пытаюсь отделить api от приложения Ember настолько, насколько я могу, поэтому я могу использовать тот же API для iOS и т. Д. Так как паспорт использует обратные вызовы для работы с Facebook, как я могу войти в систему через AJAX?Facebook login with passport.js, sails.js API и ember.js

Я смог успешно войти в Facebook с помощью паспортных JS используя AJAX GET для /auth/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?

Update

После немного больше поисков, я наткнулся на этот ответ: passport.js RESTful auth

кажется, что я не могу добиться того, чего я хочу, так как Facebook только обнажает аутентификацию на основе перенаправления, а не асинхр или JSON один. Полезно знать ... отметьте как дубликат, если хотите.

ответ

1

В вашей заявке также должен быть указан URL-адрес переадресации, на который Facebook будет перенаправлять пользователей после того, как они утвердят доступ для вашего приложения.

От Passport.js Facebook guide (Посмотрите на конфигурацию).

Таким образом, вы должны настроить состояние/url приложения ember как URL-адрес перенаправления, например. http://localhost/#/welcome

+0

Sabbir, я понимаю, как работает обратный вызов, а также что я могу решить его, установив обратный вызов перенаправления на мое приложение ember. Моя проблема заключается в том, что это требует, чтобы мой API знал о моем интерфейсном приложении, которое я хотел бы избежать, если это возможно. В идеале я хотел бы получить решение, позволяющее мне аутентифицироваться с помощью Facebook без перенаправления, поэтому я могу использовать ответ AJAX. Я не уверен, что это возможно, поскольку я все еще новичок в Facebook. – onetwopunch

+0

Вы можете настроить маршрут, который обрабатывает переадресацию facebook и отправляет ответ json, если вы ищете. В интерфейсе вы всегда можете настроить, что делать с этим ответом. – Sabbir

+0

У меня уже есть маршрут, который выдает JSON, но когда Facebook перенаправляется на этот маршрут, диспетчер должен будет знать о приложении переднего плана для перенаправления или рендеринга. Это то, чего я пытаюсь избежать, если это возможно. – onetwopunch