Я передаю электронную почту как область видимости, как показано здесь:
router.get(keys.facebookCallbackURL, passport.authenticate('facebook', { scope: ['public_profile', 'email'], failureRedirect: '/', session: false }), (req, res) => { //... } );
Генерируемый URL:
https://www.facebook.com/v3.2/dialog/oauth?response_type=code&redirect_uri=https%3A%2F%2Flocalhost%3A5000%2Fauth%2Ffacebook%2Fcallback&client_id=123977854776367
, который не просит пользователя предоставить электронную почту, но когда я добавляю &scope=email%2Cpublic_profile для URL-адреса вручную.
&scope=email%2Cpublic_profile
Например:
https://www.facebook.com/v3.2/dialog/oauth?response_type=code&redirect_uri=https%3A%2F%2Flocalhost%3A5000%2Fauth%2Ffacebook%2Fcallback&client_id=123977854776367&scope=email%2Cpublic_profile
Почему области не добавляются к URL-адресу?
Я добавил области к неправильному маршруту.
router.get( "/auth/google", passport.authenticate("google", { scope: ["profile", "email"] }) );