[英]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.