Bir MEAN uygulaması geliştiriyorum. Kimlik doğrulama için yerel, facebook ve google stratejileri için pasaport kullanıyorum., pasaport-facebook geri bildirimini açısal istemcide nasıl ele alır?
Angularjs istemcisini kullanıyorum. Tüm yönlendirme, istemcide ele alınır. Sadece sunucu veri apis alıyorum.
Pasaport facebook stratejisini kullanırken, pasaport belgelerine göre aşağıdaki kodu kullanıyorum. Karşılıklı
app.get('/auth/facebook',passport.authenticate('facebook-auth', { scope : ['email'] }));
app.get('/auth/facebook/callback',passport.authenticate('facebook-auth', {
successRedirect : '/home',
failureRedirect : '/login',
scope:['email']
}));
Sorun olduğunda renkli "Facebook kullanarak oturum açın" kullanıcı tıklama sonunda doğrulamak için facebook sayfasına yönlendirecek edecek "/ auth/facebook" rota erişecek
<a href="/auth/facebook" class="btn"><i class="fa fa-facebook"></i> Sign in using Facebook</a>
İstemci Kullanıcının kimlik bilgileri.
Başarılı bir doğrulamadan sonra, kullanıcı "successRedirect" değerinde tanımlanan şekilde "/ home" yoluna yönlendirilecek.
Şimdi, başarı veya başarısızlık için yönlendirmeler tanımlamak yerine özel geri çağırma işlevini kullanmak istiyorum. Aşağıda gibi görünecektir: İstemci "auth/facebook/geri arama" rota aramıyor olarak burada bakacak am
app.get('/auth/facebook/callback',passport.authenticate('facebook-auth', function(err,user,info){
if(err){
throw err;
}
else if(user === 'userexists'){
res.json({
'state':false,
'message':'User with this e-mail already exists'
});
}
else{
req.logIn(user,function(loginErr){
if(loginErr){
throw loginErr;
}
res.json({
'state':true,
'message':'You logged in successfully!'
});
});
}
}));
kök sorun, ben özel callback'inde yukarıda kullanamaz, o facebook tarafından çağrılır. Yani, müşteri tarafında geri bildirimin yanıtını yakalamak için bekleyen başarı işleyicisi yok!
Sunucu tarafında yeniden yönlendirmeyi ortadan kaldırmak için istemcide json biçiminde yanıt almanın ve ayrıca facebook tarafından başarılı bir kimlik doğrulamasının ardından istemciye mesaj ve kullanıcı adını iletmenin bir yolunun olmasını istiyorum.
Pasaporttan vazgeçmek üzereyim. Çok fazla kod çıkarmadan önce olası bir çözüm için umut!
Teşekkür
Net cevap için çok teşekkürler! – Designeer
@Designeer, rica ederim. Daha fazla sorunla karşılaştığınızda geri gönderebilirsiniz: D – onel0p3z
@ onel0p3z Ben de aynı şeyi açısal yerine tepki olarak yapıyorum. Sunucum Düğümde ve hızlı kullanıyorum. Sunucu tarafıma pasaport facebook'u başarıyla uyguladım. Şimdi '/ auth/facebook' çağrısını çapa etiketiyle yanıtlamıyorum. Ancak, yalnızca sunucu tarafından ele alındığı ve bu sunucuda response.redirect aracılığıyla ele almak istemediğim için, yanıt için bunun yanıtını nasıl geri alacağımı bilmiyorum. Bu senaryoyu nasıl ele alacağınızı önerebilir misiniz? – Vijay