#passport.js #nestjs
Вопрос:
Попытка связать социальные сети
acebook.stratedy.ts
@Injectable()
export class FacebookStrategy extends PassportStrategy(Strategy, 'facebook') {
constructor(private authService: AuthService) {
super({
clientID: process.env.FB_CLIENT_ID,
clientSecret: process.env.FB_CLIENT_SECRET,
callbackURL: process.env.URL '/auth/facebook/callback',
profileFields: ['id', 'displayName', 'photos'],
passReqToCallback: true,
});
}
async validate(
req: Request,
accessToken: string,
refreshToken: string,
profile: Profile,
done: (error: any, user: any, info?: any) => void,
): Promise<void> {
console.log('facebook_req', req.user); // undefined
const userInfo: IUserPassport = {
socialID: profile.id,
typeAuth: EUserTypeAuth.FACEBOOK,
fullname: profile.displayName,
avatar: profile.photos[0].value,
};
const createdUser: UserEntity = await this.authService.createUser(userInfo);
const jwtAccessToken: string = await this.authService.createJwtAccessToken({
sub: createdUser.id.toString(),
social_id: createdUser.socialID,
type: createdUser.typeAuth,
});
return done(null, jwtAccessToken);
}
}
я хочу войти в систему пользователя, но вместо этого получаю undefined
( req.user
)
auth.controller.ts
@Get('/facebook')
@UseGuards(FacebookAuthGuard)
async facebookLogin(): Promise<any> {
return HttpStatus.OK;
}
@Get('/facebook/callback')
@UseGuards(FacebookAuthGuard)
async facebookLoginRedirect(@Req() req: Request): Promise<any> {
return this.authService.authCallback(req);
}
Я хотел, чтобы req.user проверил авторизацию, а затем выбрал, регистрировать ли нового пользователя или добавлять к существующему.
как я могу получить авторизованного пользователя? Есть ли примеры?