Я пытаюсь создать логин через Facebook через конечную точку API (впервые) для мобильного приложения, использующего Nest Js framework и паспорт lib
. Я следовал этой статье здесь но я не знаю, что дальше ?! также при доступе к конечной точке просто говорит, что не авторизован!
Мне нужно зарегистрировать пользователя, если он не существует, и войти в систему, если он существует
Мой код пока (стратегия FB)
import { Injectable } from "@nestjs/common";
import { use } from "passport";
import { UsersService } from "../routes/users/users.service";
import PassportFacebookToken = require("passport-facebook-token");
@Injectable()
export class FacebookStrategy {
constructor(
private readonly userService: UsersService,
) {
this.init();
}
init() {
use(
new PassportFacebookToken(
{
clientID: '',
clientSecret: '',
fbGraphVersion: 'v3.0',
},
async (
accessToken: string,
refreshToken: string,
profile: any,
done: any,
) => {
const user = await this.userService.create(
{
username: profile.displayName,
email: profile.emails[0].value,
picture: profile.photos[0].value,
},
);
return done(null, user);
},
),
);
}
}
Сервис:
async create(
user: Partial<UserDTO>
): Promise<UserDTO> {
let userExist: UserDTO = await this.userRepository.findOne({ where: { username: user.username } });
if (userExist) {
throw new HttpException('User already exists', HttpStatus.BAD_REQUEST);
}
let createdUser = this.userRepository.create(user);
return (await this.userRepository.save(createdUser));
}
Контроллер
@UseGuards(AuthGuard('facebook-token'))
@Get('facebook')
async getTokenAfterFacebookSignIn(
@Req() req: any
) {
// return this
}