(Już robię) Riffuję z numeru https://scotch.io/tutorials/easy-node-authentication-linking-all-accounts-together, ale chcę korzystać z tej usługi uwierzytelniania społecznego dla wielu aplikacji, np. Tej, która kontroluje system ogrzewania, tej, która włącza tryskacze itp.Jak przekazać dodatkowy parametr do paszportu.authenticate
Zasadniczo, jeśli jedna z tych aplikacji sprawdzi się na serwerze i nie ma prawidłowego tokena, zostanie przekierowana do tej usługi uwierzytelniania społecznego (social-auth). Gdy użytkownik naciśnie na przyciski logowania społecznych chwyta parametr co app jego przybyciu z i dodaje go jako parametr dla /auth/facebook/:appid
// send to facebook to do the authentication
app.get('/auth/facebook/:appId', function(req,res,next){
passport.authenticate(
'facebook', { scope : 'email' }
)(req,res,next);
});
req
z req,res,next
jest odcinkach rekord użytkownika. W tym momencie social-auth nie wie, kim jest użytkownik.
fbStrategy.passReqToCallback = true;
passport.use(new FacebookStrategy(fbStrategy,
function(req, token, refreshToken, profile, done) {
var email = (profile.emails[0].value || '').toLowerCase()
process.nextTick(function() {...
Po zakończeniu autoryzacji Chcę przekierowanie z powrotem do aplikacji wywołującej i muszę :appId
param się jechać, więc mogę wrócić do prawej strony.
Generalnie zadziała, jeśli zmienię taką jak currentAppId
, dostępną dla różnych strategii społecznych, ale jeśli zdarzyło Ci się, że wiele osób uwierzytelnia się w tym samym czasie, to możliwe, że użytkownik powróci do niewłaściwej aplikacji lub aplikacja innych użytkowników. Dlatego potrzebuję appId
, aby podróżować jako parametr do passport.authenticate
. Gdzie powinienem szukać, jak to zrobić. Czy mogę owinąć passport.authenticate
lub w inny sposób zmodyfikować rzeczy?
Świetne, wielkie dzięki. Próbowałem znaleźć Twoją ostatnią sugestię za pomocą wyszukiwań takich jak "wolne gniazdo pośrednie bieżącego żądania", ale tak naprawdę nie znalazłem nic. Wszelkie odniesienia będą mile widziane – mcktimo
Właściwie to nie działa passport.use (nowe FacebookStrategy (fbStrategy, funkcję (req, żeton, refreshToken, profil, zrobione) { console.log (req._toParam); przychodzi z powrotem jako niezdefiniowany, mimo że jest zdefiniowany tutaj. app.get ('/ auth/facebook /: appId', funkcja (req, res, następna) { req.toarab = req.params.appId console.log (req._toParam) Czytałem niewłaściwy dziennik – mcktimo
Dla wszystkich społecznych strategii auth, req zostaje zastąpiony przez req.user – mcktimo