我试图创建一个用户在firestore数据库中使用nextauth适配器firebase,但我总是unauthenticated当使用适配器和用户不是在数据库中创建,它的作品时,我删除适配器.
我已经尝试了多种创建适配器的方法,但它们都失败了
内斯托特观点
export const authOptions : NextAuthOptions = {
pages: {
signIn: '/auth/login',
},
providers: [
CredentialsProvider({
name: "Credentials",
credentials: { },
async authorize(credentials) : Promise<any> {
return await signInWithEmailAndPassword(auth, (credentials as any).email || '', (credentials as any).password || '')
.then(userCredential => {
if (userCredential.user) {
return userCredential.user
}
return null
})
.catch(error => console.log(error))
}
}),
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID!,
clientSecret: process.env.GOOGLE_CLIENT_SECRET!
}),
GitHubProvider({
clientId: process.env.GITHUB_CLIENT_ID!,
clientSecret: process.env.GITHUB_CLIENT_SECRET!
}),
DiscordProvider({
clientId: process.env.DISCORD_CLIENT_ID,
clientSecret: process.env.DISCORD_CLIENT_SECRET
}),
],
/* adapter: FirestoreAdapter({
credential: cert({
projectId: process.env.FIREBASE_PROJECT_ID,
clientEmail: process.env.FIREBASE_CLIENT_EMAIL,
privateKey: process.env.FIREBASE_PRIVATE_KEY!.replace(/\\n/g, '\n')
})
}) */
// adapter: FirestoreAdapter(db.app)
}
export default NextAuth(authOptions)
当我使用谷歌proivder,但不是当使用信用,
使用信用卡注册的代码:
const signup = (formdata : FormData) => {
setEmail((formdata.get("email") as string))
setPassword((formdata.get("password") as string))
createUserWithEmailAndPassword(auth, email, password).then(res => {
console.log(res)
});
router.push("/dashboard")
};
注册提供商:function Signup(提供商:string){ signIn(provider)} // provider是名称:谷歌,github,discord
1条答案
按热度按时间omtl5h9j1#
对于任何发现这个的人,你不能使用适配器与CredentialsProvider,如这里所述:https://next-auth.js.org/providers/credentials
你将需要使用其他供应商,如谷歌或电子邮件,
如果这不是你想要的,这里有一个用firestore创建用户的示例代码,其中文档名是用户ID。