ngSatellizer 和 Hapi/Bell 不能一起玩。 Promise 不会解决 Twitter
ngSatellizer and Hapi/Bell not playing well together. Promise will not resolve for Twitter
我一直在到处寻找这个问题的可能解决方案,但似乎无法提出任何特别的建议。从修改我的回调到 Hapi 中的各种其他修补,我无法得到在 Angular 端解决的承诺。奇怪的是,Twitter 弹出窗口 window 不会关闭。如果我手动关闭它,那么承诺就会被拒绝。
所以,我不得不对其进行配置以解决被拒绝的承诺,这真是令人讨厌...
//Angular Method
$scope.addTwitter = function(){
$auth.authenticate('twitter').then(function(res){
// success
}, function(res){
// failure
});
};
//Hapi Route
//Handles both POST and GET and will successfully authenticate for Twitter on /auth/twitter
var User = require('../../models/user');
module.exports = {
description: 'Twitter oAuth for the front-end.',
tags:['twitter'],
auth: {
strategies: ['twitter'],
mode: 'try'
},
handler: function(request, reply){
if (!request.auth.isAuthenticated){
return reply('Authentication failed due to: ' + request.auth.error.message).code(400);
}
if(request.auth.isAuthenticated){
User.addTwitter(request.state['hapi-cookie'].id, request.auth.credentials, function(err, results){
//Twitter Object
//console.log(request.auth.credentials)
reply().code(200);
//return reply.redirect('/#/thanks');
});
}
}
};
在过去的几天里,我尝试了很多不同的方法来让它正常工作。唉,我在这里。感谢您的帮助!
对于未来的任何人...
我最终使用 window 对象创建了弹出窗口,并长时间轮询会话中的更改以通知 successful/failed 尝试。如果您将 Angular 与 Hapi 一起使用,这是最容易做到的。
我一直在到处寻找这个问题的可能解决方案,但似乎无法提出任何特别的建议。从修改我的回调到 Hapi 中的各种其他修补,我无法得到在 Angular 端解决的承诺。奇怪的是,Twitter 弹出窗口 window 不会关闭。如果我手动关闭它,那么承诺就会被拒绝。
所以,我不得不对其进行配置以解决被拒绝的承诺,这真是令人讨厌...
//Angular Method
$scope.addTwitter = function(){
$auth.authenticate('twitter').then(function(res){
// success
}, function(res){
// failure
});
};
//Hapi Route
//Handles both POST and GET and will successfully authenticate for Twitter on /auth/twitter
var User = require('../../models/user');
module.exports = {
description: 'Twitter oAuth for the front-end.',
tags:['twitter'],
auth: {
strategies: ['twitter'],
mode: 'try'
},
handler: function(request, reply){
if (!request.auth.isAuthenticated){
return reply('Authentication failed due to: ' + request.auth.error.message).code(400);
}
if(request.auth.isAuthenticated){
User.addTwitter(request.state['hapi-cookie'].id, request.auth.credentials, function(err, results){
//Twitter Object
//console.log(request.auth.credentials)
reply().code(200);
//return reply.redirect('/#/thanks');
});
}
}
};
在过去的几天里,我尝试了很多不同的方法来让它正常工作。唉,我在这里。感谢您的帮助!
对于未来的任何人...
我最终使用 window 对象创建了弹出窗口,并长时间轮询会话中的更改以通知 successful/failed 尝试。如果您将 Angular 与 Hapi 一起使用,这是最容易做到的。