护照失败404-GitHub的InternalOAuthError为什么?

乔尔·帕克

我有与Google和Facebook合作的护照。我试图添加Github来添加这些凭据,以便可以执行经过验证的Github API调用。因此,我只是添加了使用Google或Facebook凭据登录时使用的相同模式。

但是从Github进行auth回调后,我在代码中间看到InternalOAuthError。当几乎最后一行:'return done(null,user.userData);'时,就会发生这种情况。叫做。尝试调试会干扰回调。因此,我希望对护照有更清晰了解的人能够解释我做错了什么。

真正奇怪的是,我已经从github接收了用户个人资料,并以“ user.update(db)”的形式存储在我的数据库中,就像使用google一样。然后,当我尝试通过调用done(...)返回时,发生崩溃。

我需要在github上的个人资料中添加一些内容吗?或者是其他东西?或者是因为我已经很早就使用过护照才能使用Google凭据登录。请注意,对于Google或Facebook,我指定了会话:false。我已经尝试过使用“ passport-github”和“ passport-github2”。

为清楚起见,代码为:

index.js

var express = require('express');
var passport = require('passport');
var auth = require('../auth.service');

var router = express.Router();

router
  .get('/:user', passport.authenticate('github', {
    failureRedirect: '/signup',
    session: false
  }))

  .get('/callback', passport.authenticate('github', {
    failureRedirect: '/signup',
    session: true
  }), auth.setTokenCookie);

module.exports = router;

和相应的passport.js

var passport = require('passport');
var GitHubStrategy = require('passport-github2').Strategy;
var monk_db = rekuire('server/monk_db');
var loggingAndErrors = rekuire('./loggingAndErrors');
var auth = require('../auth.service');
var config = require('../../config/environment');
var jwt = require('jsonwebtoken');
var expressJwt = require('express-jwt');
var validateJwt = expressJwt({ secret: config.secrets.session });
var jwtDecode = require('jwt-decode');
var ObjectID = require("bson-objectid");

exports.setup = function (User, config) {
  passport.use(new GitHubStrategy({
      clientID: config.github.clientID,
      clientSecret: config.github.clientSecret,
      callbackURL: config.github.callbackURL,
      passReqToCallback: true
    },
    function(req, accessToken, refreshToken, profile, done) {
      //loggingAndErrors.logger.log(accessToken);
      var token = req.cookies.token;
      var decoded = jwtDecode(token);
      var user_id = decoded._id;
      var db = monk_db.getDb();
      var users = User.getUsers(db);
      users.findById(ObjectID(user_id), function(err, user) {
        if (err) {
          loggingAndErrors.loggerError.log(err);
          return done(err);
        }
        //loggingAndErrors.logger.log(profile);
        user.github=profile._json
        user = User.newUser(user);
        user.update(db).onResolve(function(err, result) {
          if (err) {
            loggingAndErrors.loggerError.log(err);
            return done(err);
          }
          //loggingAndErrors.logger.log(user);
          loggingAndErrors.logger.log("calling done(err, user) for user_id:", user.userData._id);
          return done(null, user.userData);
        });
      });
    }
  ));
};

崩溃是:

{ statusCode: 404,
data: '{"message":"Not\
Found","documentation_url":"https://developer.github.com/v3"}' }
GET /auth/github/callback?code=7c0c6dff81cdd9417301 500 945.444 ms - 674
InternalOAuthError: Failed to fetch user profile
at /home/joel/workspace/Tracker2/node_modules/passport-github2/lib/strategy.js:118:21
at passBackControl (/home/joel/workspace/Tracker2/node_modules/passport-github2/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:123:9)
at IncomingMessage.<anonymous> (/home/joel/workspace/Tracker2/node_modules/passport-github2/node_modules/passport-oauth2/node_modules/oauth/lib/oauth2.js:142:7)
at IncomingMessage.emit (events.js:129:20)
at _stream_readable.js:908:16
at process._tickDomainCallback (node.js:381:11)
安迪穆德

我遇到了同样的问题,所以这对我有用。

使用passport-github2并在身份验证时请求访问用户的电子邮件地址:

passport.authenticate('github', { scope: [ 'user:email' ] }));

您可能还希望访问GitHub OAuth文档中列出的其他权限

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么这种庞大的资源导入在GitHub上失败?

来自分类Dev

为什么eslint在Github Actions上失败但在本地工作?

来自分类Dev

护照“ Hello World”总是失败

来自分类Dev

为什么不使用404(未找到)错误加载favicon.ico时会失败?

来自分类Dev

为什么我的Github机密会失败(每次事件都更改)?

来自分类Dev

为什么规格失败?

来自分类Dev

为什么mmap失败?

来自分类Dev

为什么规格失败?

来自分类Dev

为什么CryptImportKey失败?

来自分类Dev

为什么会失败?

来自分类Dev

SED失败,为什么?

来自分类Dev

为什么 Auth::check() 在注销后返回 true?护照

来自分类Dev

节点护照本地策略始终失败

来自分类Dev

成功,但仍在使用失败重定向-护照

来自分类Dev

使用路由约束时,如果路由参数验证失败,API为什么会返回404而不是400?

来自分类Dev

为什么jekyll标签在github上不起作用,却给出404错误,但在localhost上有效

来自分类Dev

为什么我在托管在GitHub页面上的静态nuxt.js应用程序上获取资源404?

来自分类Dev

克隆、捆绑、db:migrated 时在 GitHub 中工作的 rails 应用程序,然后在不同的机器上失败。为什么”

来自分类Dev

为什么split(“。”)失败?爪哇

来自分类Dev

为什么设置属性失败?

来自分类Dev

为什么此返回失败?

来自分类Dev

为什么QueryPerformanceCounter / QueryPerformanceFrequency失败?

来自分类Dev

为什么此日历失败?

来自分类Dev

为什么numpy的root失败?

来自分类Dev

为什么列表理解失败?

来自分类Dev

为什么Pycurl返回失败

来自分类Dev

为什么我的比较失败?

来自分类Dev

登录配置失败-为什么

来自分类Dev

为什么我的递归失败了?

Related 相关文章

热门标签

归档