Как я могу исправить недопустимый клиент Google OAuth 401 Error? - PullRequest
0 голосов
/ 10 октября 2019

Я работаю с OAuth Google API и получаю 401 Error: invalid_client. Это не имеет ничего общего с clientID или clientSecret кодом, потому что я уверен, что я прекрасно скопировал ключи. Я снова создал новые учетные данные, чтобы убедиться, что это не проблема API Google, но ошибка все еще существует. Я также не получаю никакой ошибки в консоли, когда я работаю на сервере. Может ли кто-нибудь помочь мне, пожалуйста?

Это то, что я получаю из браузера:

>      401. That’s an error.
>         
>         Error: invalid_client
>         
>         The OAuth client was not found.
>         
>         Request Details
>         response_type=code
>         redirect_uri=http://localhost:5000/auth/google/callback
>         scope=profile email
>         client_id=keys.googleClientID
>         That’s all we know.

Это часть моего кода:

 passport.use(
      new GoogleStrategy(
        {
          clientID: 'keys.googleClientID',
          clienSecret: 'keys.googleClientSecret',
          callbackURL: '/auth/google/callback'
        },
        (accessToken, refreshToken, profile, done) => {
          console.log('access token', accessToken);
          console.log('refresh token', refreshToken);
          console.log('profile', profile);
        }
      )
    );

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

Спасибо! :)

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Как я уже упоминал в своем комментарии, мне кажется, что вы отправляете 'keys.googleClientID', который не является допустимым ключом, вам нужно отправить значение переменной. keys.googleClientID

 passport.use(
      new GoogleStrategy(
        {
          clientID: keys.googleClientID,
          clientSecret: keys.googleClientSecret,
          callbackURL: '/auth/google/callback'
        },
        (accessToken, refreshToken, profile, done) => {
          console.log('access token', accessToken);
          console.log('refresh token', refreshToken);
          console.log('profile', profile);
        }
      )
    );
0 голосов
/ 10 октября 2019

вы должны убедиться, что Google+ API включен, и эти Подобные исправления могут помочь вам, чья информация варьируется от получения новых ключей до настройки названия продукта, которое можно задать в разделе экрана Согласия GoogleКонсоль разработчиков для вашего проекта. Посмотрите под API & auth на левой навигационной панели и выберите Consent screen. Вам также необходимо указать свой адрес электронной почты в поле над названием продукта. Установка адреса электронной почты и имени продукта на экране согласия консоли разработчика Google также устраняет ошибку

, и если вы используете модуль конфигурации, равный const config = require("config"); const keys = config.get('keys');, вы можете попробовать это с помощью строки шаблона

passport.use( new GoogleStrategy( { clientID: $ {keys.googleClientID} `, используйте обратные пометки до $ и после закрытия}

      clientSecret: `${keys.googleClientSecret}`, //do like this for the above clientID 
      callbackURL: '/auth/google/callback'
    },
    (accessToken, refreshToken, profile, done) => {
      console.log('access token', accessToken);
      console.log('refresh token', refreshToken);
      console.log('profile', profile);
    }
  )
);

, то есть backtick $ {keys.googleClientID} backtick я говорю backtickпотому что stackoverflow отформатировал бы обратную черту (``)

или используя фактическую переменную passport.use( new GoogleStrategy( { clientID: keys.googleClientID, clientSecret: keys.googleClientSecret, callbackURL: '/auth/google/callback' }, (accessToken, refreshToken, profile, done) => { console.log('access token', accessToken); console.log('refresh token', refreshToken); console.log('profile', profile); } ) ); плюс вы также неправильно написали clientSecret в своем коде, это clienSecret

...