我从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创建的Web应用
-使用www.my-domain.com创建了Web应用,并且主机文件中包含127.0.0.1 www.my-domain.com。
我确定我做了更多我不记得的尝试。我已经三重,四重检查了我的clientID和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标头设置了未定义的值而引发了错误。