Аутентифицировать пользователя с помощью внешнего URL, Ember Simple Auth после обратного вызова с токеном

Я использую внешний сервис для аутентификации Stamplay ..

Для аутентификации с помощью имени пользователя и пароля я должен сделать сообщение в ${config.host}/auth/v1/local/loginОбратный вызов для этого поста содержит токен, поэтому я создал собственный аутентификатор для его обработки

Пользовательский Аутентификатор

export default Base.extend({
  tokenEndpoint: `${config.host}/auth/v1/local/login`,

  // ... Omited 

  authenticate(options) {
    return new Ember.RSVP.Promise((resolve, reject) => {
      Ember.$.ajax({
        url: this.tokenEndpoint,
        type: 'POST',
        data: JSON.stringify({
          email: options.email,
          password: options.password
        }),
        contentType: 'application/json;charset=utf-8',
        dataType: 'json'
      }).then(function (response, status, xhr) {
        Ember.run(function () {
          resolve({
            token: xhr.getResponseHeader('x-stamplay-jwt')
          });
        });
      }, function (xhr) {
        Ember.run(function () {
          reject(xhr.responseJSON.error);
        });
      });
    });
  },

  invalidate(data) {
    return Ember.RSVP.Promise.resolve(data);
  }
});

И все работает нормально.. но...

Моя проблема

Для социальных входов мне нужно перенаправить пользователя на https://MYAPP.stamplayapp.com/auth/v1/EXTERNAL_SERVICE/connect

EXTERNAL_SERVICE может быть.. github, twitter, facebook...

Затем пользователь перенаправляется на страницу сервиса, и после входа в систему обратный вызов будет http://myapp.com/callback?jwt=XYZ

Итак, как я могу захватить токен и войти в систему пользователя с этим токеном?

1 ответ

Скажите, если я не прав, но я думаю, что для Facebook вы можете использовать Torii, который хорошо работает с simple-auth. Twitter использует Oauth1.0, поэтому, на мой взгляд, он немного сложнее. Но Facebook / Google должны быть в порядке. По сути, Ember запросит код авторизации у API Facebook, а затем отправит его на ваш сервер. Затем ваш сервер запросит у Facebook API access_token и использует его для получения информации о пользователе. Наконец, вы можете загрузить / зарегистрировать своего пользователя, сгенерировать токен JWT и отправить его в свое приложение Ember. Но мне интересно знать, если вы нашли решение для Twitter.

Другие вопросы по тегам