Я реализовал паспорт с помощью 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 все еще не делает поверьте, это может быть проблемой?