Хобрук: Ваш путь к мастерству в программировании

InternalOAuthError: не удалось получить паспорт токена доступа-instagram

У меня проблема с паспортом-инстаграмом, я пытаюсь внедрить паспорт-инстаграм в свое приложение. Всякий раз, когда я пытаюсь войти в систему с помощью кнопки входа в Instagram, я получаю эту ошибку: InternalOAuthError: Failed to get access token {нет соответствующего кода

Вот код

instagram.js (файл конфигурации паспорта instagram)

var passport = require('passport');
var InstagramStrategy = require('passport-instagram').Strategy;
var User = require('../models/user');

var instaOpt = {
  clientID: "aad229e3597643be92568acb46efb40d",
  clientSecret: "5563070a33394e0fafada92a16ec2e71",
  callbackURL: "http://localhost:8000/auth/instagram/callback"
};

var instagramInit = function(accessToken, refreshToken, profile, callback) {
  User.findOne({ "instagram.id" : profile.id } , function(err, user) {
    if (err) return callback(err);

    if (user) {
      return callback(null, user); // User already exist
    }

    var newUser = new User();
    newUser.instagram.id = profile.id;
    newUser.instagram.token = accessToken;
    newUser.instagram.email = profile.email;
    newUser.instagram.displayName = profile.displayName;
    newUser.instagram.name = profile.name;
    newUser.instagram.username = profile.username;
    // newUser.instagram.picture = profile.picture;

    newUser.save(function(err) {
      if (err) {
        throw err;
      }
      return callback(null, newUser);
    });
  });
}

passport.use(new InstagramStrategy(instaOpt, instagramInit));

passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});


module.exports = {
  instagramLogin: passport.authenticate("instagram"),
  instagramCallback: passport.authenticate("instagram", {
    successRedirect: "/profile",
    failureRedirect: "/"
  })
}

router.js

var router = require('express').Router();
var authConfig = require('../config/auth-config');
var auth = require('../config/instagram');

router.get('/', function(req, res) {
  res.render('index.ejs');
});

router.get('/logout', function(req, res) {
  req.logout();
  res.redirect('/');
});


router.get('/profile', function(req, res) {
  res.render('profile.ejs', {
    user: req.user
  });
});

router.get('/auth/instagram', auth.instagramLogin);
router.get('/auth/instagram/callback', auth.instagramCallback);

module.exports = router;

database.js (файл пользовательской схемы)

var mongoose = require('mongoose');
var bcrypt = require('bcrypt-nodejs');
var Schema = mongoose.Schema;

var User = new Schema({
  instagram: {
    id: String,
    token: String,
    email: String,
    displayName: String,
    username: String,
    name: String,
    picture: String,
  }
});

module.exports = mongoose.model('User', User);

Клиент Instagram (позже изменит клиент и секрет) введите здесь описание изображения

Теперь я действительно запутался, где я сделал неправильно? может быть, это что-то очевидное.


  • Любое обновление о том, как это было исправлено 05.03.2018
  • Я тоже столкнулся с этой проблемой. Можете ли вы опубликовать обновление о том, как вы это исправили? 29.06.2018

Ответы:


1

Используйте 1_. Например:

passport.authenticate('oath2', {failWithError: true})
27.10.2016

2

Вместо этого попробуйте создать новое приложение и использовать новый идентификатор клиента и секретный ключ. У меня такая же ошибка, когда я выполнил аутентификацию паспорта с интеграцией с facebook, затем я создал новый идентификатор приложения facebook и использовал новый секретный ключ и идентификатор клиента, после чего это сработало.

14.10.2015
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

Как свинг-трейдеры могут использовать ИИ для больших выигрышей
По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

Как построить любой стол
Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..