我正尝试通过API端点(第一次)构建Facebook登录,主要是使用NestJs框架和护照库的移动应用程序。
我已经跟踪了这篇文章这里,但我不知道下一步是什么?!同样的,当访问端点时,只是说“不授权”!
我需要注册一个用户(如果不存在),如果它存在,我需要登录()
到目前为止我的代码( 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
}发布于 2020-06-21 22:12:20
您的客户端需要在登录后发送从Facebook接收到的access_token,将access_token作为查询param发送到您的Facebook端点。
GET /auth/facebook?access_token=<TOKEN_HERE>您应该检查这里以获得澄清。
发布于 2021-09-29 03:36:57
如果有人是新来的,或者还在跟踪这个问题,那么有一个很棒的npm包,它在您的NestJS应用程序中提供了各种社交登录实现。你可以登录谷歌,facebook,推特和更多。
https://stackoverflow.com/questions/61062780
复制相似问题