Рабочий процесс для Ember-simple-auth, Torii и Facebook Oauth2
Послемой предыдущий вопрос об ember-simple-auth и торииЯ успешно аутентифицирую своих пользователей с помощью их учетных записей Facebook.
Но в настоящее время провайдер Torii facebook-oauth2 возвращает код авторизации из Facebook; когда обещание разрешается, я отправляю этот код авторизации в свой бэкэнд, где я выполняю запрос к Facebook, чтобы получить идентификатор пользователя и адрес электронной почты: затем я аутентифицирую пользователя в своем бэкэнде, генерируя определенный токен доступа и отправляя обратно в мое приложение ember.
Код клиента:
// app/controllers/login.js
import Ember from 'ember';
import LoginControllerMixin from 'simple-auth/mixins/login-controller-mixin';
export
default Ember.Controller.extend(LoginControllerMixin, {
// This authenticator for a simple login/password authentication.
authenticator: 'simple-auth-authenticator:oauth2-password-grant',
actions: {
// This method for login with Facebook.
authenticateWithFacebook: function() {
var _this = this;
this.get('session').authenticate(
'simple-auth-authenticator:torii',
"facebook-oauth2"
).then(
function() {
var authCode = _this.get('session.authorizationCode');
Ember.$.ajax({
type: "POST",
url: window.ENV.host + "/facebook/auth.json",
data: JSON.stringify({
auth_code: authCode
}),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
// TODO : manage access_token and save it to the session
},
failure: function(errMsg) {
// TODO : manage error
}
});
},
function(error) {
alert('There was an error when trying to sign you in: ' + error);
}
);
}
}
});
Проблема заключается в том, что сеанс ember-simple-auth помечается как аутентифицированный, когда разрешение аутентификации разрешается, а затем приложение перенаправляет на определенный аутентифицированный маршрут. Но в этом случае сеанс должен быть аутентифицирован, когда мой бэкэнд возвращает «настоящий» access_token.
Есть ли способ управлять этим рабочим процессом с помощью ember-simple-auth-torii или я должен написать свой собственный аутентификатор?