Fluxo de trabalho para Ember-simple-auth, Torii e Facebook Oauth2
Depois deminha pergunta anterior sobre ember-simple-auth e torii, Autentico com êxito meus usuários com suas contas do Facebook.
Mas atualmente, o provedor do torii, facebook-oauth2, está retornando um código de autorização do Facebook; quando a promessa é resolvida, eu envio esse código de autorização ao meu back-end, onde solicito ao Facebook para obter o ID e o email do usuário: então autentico o usuário no meu back-end, gerando um token de acesso específico e enviando de volta para o meu aplicativo brasa.
Código do cliente :
// 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);
}
);
}
}
});
O problema é: a sessão do ember-simple-auth é marcada como autenticada quando a promessa da autenticação é resolvida e o aplicativo é redirecionado para a rota autenticada específica. Mas, neste caso, a sessão deve ser autenticada quando meu back-end retornar o access_token "real".
Existe uma maneira de gerenciar esse fluxo de trabalho com o ember-simple-auth-torii ou devo escrever meu próprio autenticador?