@falcon_sapsan
DevOps

Почему не всегда срабатывает аутентификация ВКонтакте через passport-vkontakte?

Настроил аутентификацию через Вконтакте, используя passport-vkontakte. Аутентификация работает, но довольно часто возникает ошибка.. я заметил следующие виды ошибок:

InternalOAuthError: failed to fetch user profile
    at /home/www/workspace/node_modules/passport-vkontakte/lib/passport-vkontakte/strategy.js:144:28
    at ClientRequest.<anonymous> (/home/www/workspace/node_modules/passport-vkontakte/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:148:5)
    at ClientRequest.emit (events.js:107:17)
    at TLSSocket.socketErrorListener (_http_client.js:272:9)
    at TLSSocket.emit (events.js:129:20)
    at net.js:451:14
    at process._tickCallback (node.js:355:11)


InternalOAuthError: Failed to obtain access token
    at Strategy.OAuth2Strategy._createOAuthError (/home/www/workspace/node_modules/passport-vkontakte/node_modules/passport-oauth2/lib/strategy.js:349:17)
    at /home/www/workspace/node_modules/passport-vkontakte/node_modules/passport-oauth2/lib/strategy.js:171:43
    at /home/www/workspace/node_modules/passport-vkontakte/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:177:18
    at ClientRequest.<anonymous> (/home/www/workspace/node_modules/passport-vkontakte/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:148:5)
    at ClientRequest.emit (events.js:107:17)
    at TLSSocket.socketErrorListener (_http_client.js:272:9)
    at TLSSocket.emit (events.js:129:20)
    at net.js:451:14
    at process._tickCallback (node.js:355:11)


по коду ничего особенного
VKontakteStrategy = require('passport-vkontakte').Strategy
...
passport.use(new VKontakteStrategy({
	    clientID:     VKONTAKTE_APP_ID, // VK.com docs call it 'API ID'
	    clientSecret: VKONTAKTE_APP_SECRET,
	    callbackURL:  "https://local/workspace/auth/vkontakte/callback/"
	  },
	  function(accessToken, refreshToken, profile, done) {
		  console.log(profile);
		});
		});

app.get('/auth/vkontakte', passport.authenticate('vkontakte', { 
		successRedirect: '/workspace/', 
		failureRedirect: '/error'
		//scope: ['email'] 
	}));
	
	app.get('/auth/vkontakte/callback/',
		  passport.authenticate('vkontakte', { 
			  failureRedirect: '/workspace/auth/vkontakte'
				//scope: ['email'] 
		  }),
			  function(req, res) {
		console.log("[OAuth2:redirect:query]:", JSON.stringify(req.query));
	    console.log("[OAuth2:redirect:body]:", JSON.stringify(req.body))
			    // Successful authentication, redirect home.
			    res.redirect('workspace/');
			  });


Параллельно используется аутентификация через Facebook - работает без сбоев. Конструкции FB и VK полностью идентичные.

Ошибка возникает хаотично.. отследить зависимости не смог.. То работает - то нет..
Собственно из-за чего аутентификацию вконтакте может корячить?
  • Вопрос задан
  • 1110 просмотров
Пригласить эксперта
Ответы на вопрос 1
@falcon_sapsan Автор вопроса
DevOps
Получил ответ на гитхабе

If it's random, then it's most likely a VK issue. Can't help you there.
Be prepared to handle auth errors in your app, because they can and will happen.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы