簡體   English   中英

使用令牌回調后,使用外部網址,Ember簡單身份驗證對用戶進行身份驗證

[英]Authenticate user with external url, Ember Simple Auth after callback with token

我使用外部服務來認證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

那么,如何捕獲令牌並使用此令牌登錄用戶?

告訴我是否錯,但是我認為對於Facebook,您可以使用Torii ,它與simple-auth配合良好。 Twitter使用的是Oauth1.0,因此我認為它有點復雜。 但是Facebook / Google應該沒問題。 基本上,Ember將從Facebook API請求一個AuthorizationCode,然后將其發送到您的服務器。 然后,您的服務器將詢問Facebook API一個access_token,並使用它來獲取用戶信息。 最后,您可以加載/注冊用戶,生成JWT令牌並將其發送到Ember應用。 但是我很想知道您是否找到了Twitter的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM