Перенаправить клиенту после авторизации Google - PullRequest
0 голосов
/ 30 июня 2019

Я создал экспресс-приложение и create-react-app.На react app я изменяю файл /src/App.js:

import React from 'react';
import logo from './logo.svg';
import './App.css';

function App() {
  return (
    <div className="App">
      <header className="App-header">
        <img src={logo} className="App-logo" alt="logo" />
        <p>
          Edit <code>src/App.js</code> and save to reload.
        </p>
        <a
            className="App-link"
            href="http://localhost:3000/auth/google"
            target="_blank"
            rel="noopener noreferrer"
        >
          Login google
        </a>
      </header>
    </div>
  );
}

export default App;

И после этого я написал некоторый код для google authenticate на бэкенде.

Здесь я инициализирую ressport.Я использую массив users в качестве базы данных.

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth2');

const users = [];

passport.serializeUser((user, done) => {
    console.log('serialize user. id = ', user.id);
    done(null, user.id);
});

passport.deserializeUser((id, done) => {
    console.log('deseri
    req.session = null;alize user. id = ', id);
    const user = users.find(u => u.id === id);
    done(null, user);
});

passport.use(
    new GoogleStrategy({
        callbackURL: '/auth/google/redirect',
        clientID: 'xxx',
        clientSecret: 'xxx'
    }, (accessToken, refreshToken, profile, done) => {
        const user = {
            id: profile.id,
            username: profile.displayName
        };

        if (users.find(u => u.id === user.id)) {
            console.log('user exist');
            done(null, user);
        } else {
            console.log('user is new');
            users.push(user);
            done(null, user);
        }
    })
);

А вот мои маршруты.

router.get('/auth/google', passport.authenticate('google', {
    scope: ['profile']
}));

router.get('/auth/google/redirect',
    passport.authenticate('google'),
    (req, res) => {
        res.send(`Hi, ${req.user.username}`);
    }
);

ОК.Это работает.Я иду на http://localhost:9005 в моем браузере.Затем я нажимаю Login.Выберите мою учетную запись Google.И стать перенаправленным на http://localhost:3000, где я вижу Hello, Aleksandr.Но проблема в порте 3000.Мое приложение реагирует на порт 9005.Я хочу, чтобы пользователь оставался на моем сайте после аутентификации.Пожалуйста, помогите мне с этим.

...