Как исправить InternalOAuthError: не удалось получить токен доступа для passport-instagram - PullRequest
0 голосов
/ 30 июня 2019

Я реализовал паспорт с помощью github, но для паспорта-инстаграм я столкнулся с этой проблемой. Ошибка: InternalOAuthError: Не удалось получить токен доступа в Strategy.OAuth2Strategy._createOAuthError. Ошибка появилась после авторизации, поэтому я предполагаю, что проблема заключается в обратном вызове.

Посмотрите на код и, пожалуйста, помогите мне.

Настройка паспорта:

 passport.serializeUser((user, cb) => cb(null, user))
 passport.deserializeUser((obj, cb) => cb(null, obj))

 const callback = (accessToken, refreshToken, profile, cb) => cb(null, profile)
 passport.use(new InstagramStrategy({
        clientID: '06b648073d674f01b2c90f61664ae840',
        clientScret: 'd2c234b4dab344b78045ff67bffa40ca',
        callbackURL: 'https://127.0.0.1:8080/instagram/callback'
 }, callback))

Маршрутизация:

const instagramAuth = passport.authenticate('instagram');

router.get('/instagram/callback', instagramAuth, const io = req.app.get('io')
    console.log('hi');
    const user = {
        name: 'Alex',
        // photo: req.user.photos[0].value
    }
    io.in(req.session.socketId).emit('instagram', user) //emit to client
    res.end())
}

Сервер:

const passportInit = require('./config/passport-setup')
const key = require('./config/keys');
const authRouter = require('./routes/auth-routes')

const httpsOptions = {
    key: fs.readFileSync(path.join(__dirname, 'certs', 'server.key')),
    cert: fs.readFileSync(path.join(__dirname, 'certs', 'server.crt'))
}

const app = express();
const server = https.createServer(httpsOptions, app);

app.use(express.json());
app.use(passport.initialize());
passportInit()

app.use(cors({
    origin: 'http://localhost:3000'
}))

app.use(session({ 
    secret: key.sessionKey, 
    resave: true, 
    saveUninitialized: true 
}))

const io = socketIo(server);
app.set('io', io)

app.use('/', authRouter);

server.listen(8080, () => {
    console.log('listening...')
})

Наконец сообщение об ошибке отправляется по этой ссылке: https://127.0.0.1:8080/instagram/callback?code=902c21e821ce41d3bfdcb69b770ca75e

При чтении instagram api приведенный выше код используется для получения токена доступа, но я до сих пор не понимаю, для чего он нужен, и instagram сказал, что запросы должны быть сделаны через https, я сам подписал сертификат, но мой chrome все еще не делает поверьте, это может быть проблемой?

...