Yahoo OAuth2提供了无效的授权标头

时间:2019-04-28 01:16:54

标签: reactjs oauth-2.0 yahoo-api

我从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标头设置了未定义的值而引发了错误。

0 个答案:

没有答案