Ember.js 使用外部url对用户进行身份验证,并在使用令牌回调后进行简单身份验证

Ember.js 使用外部url对用户进行身份验证,并在使用令牌回调后进行简单身份验证,ember.js,ember-simple-auth,stamplay,Ember.js,Ember Simple Auth,Stamplay,我使用外部服务进行身份验证 要使用用户名和密码进行身份验证,我必须在${config.host}/auth/v1/local/login 这篇文章的回调包含令牌,所以我创建了一个自定义验证器来处理它 自定义验证器 一切都很好。。但是… 我的问题 对于社交登录,我需要将用户重定向到https://MYAPP.stamplayapp.com/auth/v1/EXTERNAL_SERVICE/connect 外部_服务可以是。。github、twitter、facebook 然后,用户被重定向到服务页

我使用外部服务进行身份验证

要使用用户名和密码进行身份验证,我必须在
${config.host}/auth/v1/local/login
这篇文章的回调包含令牌,所以我创建了一个自定义验证器来处理它

自定义验证器 一切都很好。。但是…

我的问题 对于社交登录,我需要将用户重定向到
https://MYAPP.stamplayapp.com/auth/v1/EXTERNAL_SERVICE/connect

外部_服务可以是。。github、twitter、facebook

然后,用户被重定向到服务页面,登录后,回调将
http://myapp.com/callback?jwt=XYZ


那么,我如何捕获令牌并使用该令牌登录用户呢?

如果我错了,请告诉我,但我认为对于Facebook,您可以使用它,它可以与简单的身份验证一起工作。Twitter使用的是Oauth1.0,所以在我看来有点复杂。但Facebook/谷歌应该没问题。 基本上,Ember将从Facebook API请求授权代码,然后将其发送到您的服务器。然后,您的服务器将向Facebook API请求访问令牌,并使用它获取用户信息。最后,您可以加载/注册您的用户,生成JWT令牌并将其发送到您的Ember应用程序。 但我很想知道你们是否找到了Twitter的解决方案

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);
  }
});