2015-08-28 6 views
4

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

Вот код

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 клиент (Изменит клиента и секрет позже) enter image description here

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

+0

Любое обновление о том, как это было исправлено –

ответ

-1

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

0

{failWithError: true}. Например:

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

thanx @FrankreZ –

Смежные вопросы