Yahoo OAuth2 дает неверный заголовок авторизации - PullRequest
0 голосов
/ 28 апреля 2019

Я начал с https://github.com/funador/react-auth-client
и https://github.com/funador/react-auth-server.

Мне удалось заставить работать учетные записи Google и github oauth (я удалил Facebook и Twitter), но не могу заставить работать Yahoo OAuth. Я использую https://github.com/auth0/passport-yahoo-oauth2 для входа в систему.

Я испробовал каждое предложение, которое смог найти:
- Порт 80 (в настоящее время используется порт 443, поскольку порт 80 ничего не изменил)
- Создано установленное приложение без обратного вызова домена
- Создано установленное приложение с обратным вызовом домена
- Создано веб-приложение с 127.0.0.1
- Создано веб-приложение с www.my-domain.com и 127.0.0.1 www.my-domain.com в файле хоста.

Я уверен, что попробовал больше, чем не помню. Я трижды, четыре раза проверил мои clientIDs и Secrets.
Я регистрируюсь, чтобы утешить ID / Secret и request_options и подтвердил, что каждый аспект параметров запроса является правильным. Но я все равно получаю, что бы я ни пытался.

{"error":"INVALID_INPUT","error_description":"Invalid authorization header"}

Это не похоже на порт 443 или мои сертификаты.

Вот большинство изменений, которые я сделал, они довольно общие.

config.js

const providers = ['yahoo', 'google', 'github']

const callbacks = providers.map(provider => {
  return process.env.NODE_ENV === 'production'
    ? `https://www.my-domain.com/${provider}/callback`
    : `https://127.0.0.1/${provider}/callback`
})

const [yahooURL, googleURL, githubURL] = callbacks

exports.CLIENT_ORIGIN = process.env.NODE_ENV === 'production'
  ? 'https://www.my-domain.com'
  : ['https://127.0.0.1:3000', 'https://localhost:3000']

exports.YAHOO_CONFIG = {
  clientID: process.env.YAHOO_KEY_DEV,
  clientSecret: process.env.YAHOO_SECRET_DEV,
  callbackURL: yahooURL
}

passport.init.js

const passport = require('passport')
const { OAuth2Strategy: YahooStrategy} = require('passport-yahoo-oauth2')
const { OAuth2Strategy: GoogleStrategy } = require('passport-google-oauth')
const { Strategy: GithubStrategy} = require('passport-github')
const { 
  YAHOO_CONFIG, GOOGLE_CONFIG, GITHUB_CONFIG
} = require('../config')

module.exports = () => {  

  // Allowing passport to serialize and deserialize users into sessions
  passport.serializeUser((user, cb) => cb(null, user))
  passport.deserializeUser((obj, cb) => cb(null, obj))

  // The callback that is invoked when an OAuth provider sends back user 
  // information. Normally, you would save the user to the database 
  // in this callback and it would be customized for each provider
  const callback = (accessToken, refreshToken, profile, cb) => cb(null, profile)

  // Adding each OAuth provider's strategy to passport
  passport.use(new YahooStrategy(YAHOO_CONFIG, callback))
  passport.use(new GoogleStrategy(GOOGLE_CONFIG, callback))
  passport.use(new GithubStrategy(GITHUB_CONFIG, callback))
}

Для auth.controller.js я скопировал github, я знаю, что это неправильно, но он не вызывает его, потому что выдает ошибку из-за неопределенных значений, установленных из недопустимого заголовка auth.

...