Я начал с 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.