Slack OAuth 回调在 Express 中返回 404

编程入门 行业动态 更新时间:2024-10-04 13:30:38

Slack OAuth <a href=https://www.elefans.com/category/jswz/34/1771356.html style=回调在 Express 中返回 404"/>

Slack OAuth 回调在 Express 中返回 404

尝试使用 Slack OAuth 进行身份验证时,发生了一些非常奇怪的事情。基本上我有两条路线

/auth/slack
/auth/slack/callback
第一个工作并且它初始化oauth流但是一旦重定向uri命中它最终给我一个404。这是我如何设置它。

我用通行证策略做了一个服务

import passport from "passport";
const SlackStrategy = require('passport-slack').Strategy;

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

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

passport.use(new SlackStrategy({
    clientID: process.env.SLACK_CLIENT_ID,
    clientSecret: process.env.SLACK_CLIENT_SECRET,
    callbackURL: process.env.SLACK_REDIRECT_URI,
    scope: ['identity.basic', 'identity.email', 'identity.avatar', 'identity.team']
},
function(accessToken, refreshToken, profile, done) {
    return done(null, profile)
}
));

然后我创建了路由器

import { Router } from "express";
import passport from "passport";
require('../services/slack-service');


const slackRouter = Router();

slackRouter.get('/auth/error', (req, res) => res.send('Unknown Error'))
slackRouter.get('/auth/slack', passport.authenticate('slack', { scope: ['identity.basic']}));
slackRouter.get('/auth/slack/callback', passport.authenticate('slack', { failureRedirect: '/auth/error'}), function(req, res) {// get the authenticated user's Slack username from req.user
    console.log('hit')
  });

export { slackRouter } 

在 setup.js 文件中应用我需要的所有中间件

import 'dotenv/config';
import 'express-async-errors';

import cookieParser from 'cookie-parser';
import cors from 'cors';
import express from 'express';
import helmet from 'helmet';
import morgan from 'morgan';
import session from 'express-session';
import passport from 'passport';

import { errorHandler } from './middleware/errorHandler.middleware';
import { router } from './router';
import cookieSession from 'cookie-session';

export const applyMiddleware = app => {
    app.use(express.json())
    app.use(cors())
    app.use(cookieParser())
    app.use(morgan('tiny'))
    app.use(helmet())
    app.use(router)
    app.use(errorHandler())
    app.use(cookieSession({
        name: 'amazon-auth-service',
        keys: ['key1', 'key2']
    }))
    app.use(passport.initialize())
    app.use(passport.session())

}

主路由器

import { Http } from '@status/codes';
import { Router } from 'express';

import { googleRouter } from './micromodules/google/routes/google-routes';
import { slackRouter } from './micromodules/slack/routes/slack-routes';

const router = Router();

router.use(googleRouter)
router.use(slackRouter)

router.get('/', (request, response ) => {
    response.status(Http.ImATeapot).json({
        healthy: true,
    })
});

export { router }

和 app.js 文件

import express from 'express';

import { applyMiddleware } from './api/setup';
import { PORT } from '~config/environment';
import passport from 'passport';

const app = express();

applyMiddleware(app);

app.listen(process.env.PORT || 5000, () => {
    console.log('Server running at port', PORT)
});

所有环境变量都是正确的,我已经将重定向 uri 添加到 Slack 并使用 https 部署到 Heroku

回答如下:

更多推荐

Slack OAuth 回调在 Express 中返回 404

本文发布于:2024-05-30 14:01:10,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770574.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:回调   OAuth   Slack   Express

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!