在NestJs中实现OAuth1

在NestJs中实现OAuth1,nestjs,Nestjs,我正在尝试使用PassportJs为Atlassian堆栈(竹子)设置NestJs 不幸的是,文档只解释了如何使用本地身份验证来实现这一点 我阅读了文档,并且PassportJs for Nestjs应该提供我使用的策略,但是我在Nestjs中得到了“OAuth身份验证需要会话支持”错误 所以我尝试在auth.module.ts中配置它 从'@nestjs/common'导入{HttpModule,Module}; 从“../Controller/auth.Controller”导入{AuthC

我正在尝试使用PassportJs为Atlassian堆栈(竹子)设置NestJs 不幸的是,文档只解释了如何使用本地身份验证来实现这一点

我阅读了文档,并且PassportJs for Nestjs应该提供我使用的策略,但是我在Nestjs中得到了“OAuth身份验证需要会话支持”错误

所以我尝试在auth.module.ts中配置它

从'@nestjs/common'导入{HttpModule,Module};
从“../Controller/auth.Controller”导入{AuthController};
从“../../app.service”导入{AppService};
从“../../config/config.module”导入{ConfigModule};
从“../strategy/o-auth1.service”导入{OAuth1};
从'@nestjs/passport'导入{PassportModule};
@模块({
导入:[HttpModule,ConfigModule,PassportModule.register({session:true})],
控制器:[AuthController],
提供者:[AppService,OAuth1],
导出:[PassportModule.register({session:true})],
})
导出类AuthModule{
}
这就是模块

从“../../config/config.service”导入{ConfigService};
从'@nestjs/common'导入{Injectable,Req,Res};
从'@nestjs/passport'导入{PassportStrategy};
从“passport atlassian oauth”导入{Strategy};
从'@nest middleware/express session'导入{ExpressSessionMiddleware};
从“express”导入{Request,Response};
@可注射()
导出类OAuth1扩展了PassportStrategy(策略“OAuth1”){
构造函数(私有只读envConfig:ConfigService){
超级(
{
应用程序URL:'http://localhost:8085/',
消费主义:消费主义,
消费者信用:消费者信用,
callbackURL:envConfig.thisCallbackURL,
},
(令牌、令牌机密、配置文件、cb)=>{
User.findOrCreate({exampleId:profile.id},(err,User)=>{
返回cb(错误,用户);
});
},
);
}
}
这是已实施的战略

@Get(“”)
@UseGuard(AuthGuard('oauth1'))
异步身份验证(@Req()Req:Request,@Res()Res:Response):承诺{
console.log(this);
试一试{
控制台日志(“”);
}捕获(e){
控制台日志(e);
}
res.send('hallo');
返回“测试”;
}
这是控制器


我试着到处玩,但我找不到任何解决方案

将此添加到您的main.ts

从'@nestjs/core'导入{NestFactory};
从“./app.module”导入{AppModule};
导入会话=需要(“快速会话”);
异步函数引导(){
const app=wait NestFactory.create(AppModule);
使用(会话({secret:'yousecret',saveUninitialized:true,resave:true});
等待应用程序。聆听(3010);
}
bootstrap();

Hi@kira,我试着按照你的答案和问题来回答,但是没有用,我不知道如何在nestjs中解决。你能澄清一下谁是负责处理
callbackURL:envConfig.thisCallbackURL的控制器或服务吗?
?我一直得到:
{“trace”:"InternalOAuthError:未能在\\node\u modules\\passport atlassian oauth\\lib\\passport atlassian oauth\\strategy.js:95:33\n
,我正在JiraHi@Adham Sabry上尝试您的解决方案—这是很久以前的事了。但envConfig是一个服务,它加载我的环境文件,并将密钥、id等内容放入正确的对象中。我没有访问此代码的权限,否则我会共享它。因此,我的回调url位于一个文件中,该文件由envConfig.thisCallbackURL读取