我使用外部服务进行身份验证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
那么,我如何捕获令牌并使用此令牌登录用户?
答案 0 :(得分:0)
告诉我,如果我错了,但我认为对于Facebook,您可以使用Torii,这与simple-auth一起运作良好。 Twitter正在使用Oauth1.0,所以我认为它有点复杂。但Facebook /谷歌应该没问题。 基本上,Ember将从Facebook API请求AuthorizationCode,然后将其发送到您的服务器。然后,您的服务器将向Facebook API询问access_token,并使用它来获取用户信息。最后,您可以加载/注册您的用户,生成JWT令牌并将其发送到您的Ember应用程序。 但我很想知道你是否找到了Twitter的解决方案。