how to get accessToken, refreshToken from firestore(fb and google signin) firebase adapter next-aut
Unanswered
Belgian Hare posted this in #help-forum
Belgian HareOP
Hello I have setup of firebase adapter + next-auth in my nextjs app. its credentialprovider, fb, google. Credential provider works fine, but with fb, and google I don't get the accessToken and refreshToken. Anyway I can get it without using react-firebase-hooks? [...next-auth].js
In firebase, users that signedin through fb and google are stored in firestore database
[...next-auth].js below:
In firebase, users that signedin through fb and google are stored in firestore database
[...next-auth].js below:
1 Reply
Belgian HareOP
[...next-auth].js:
export default NextAuth({
session: {
strategy: 'jwt',
},
providers: [
CredentialsProvider({
name: 'Credentials',
credentials: {},
async authorize(credentials) {
try {
const userCredential = await signInWithEmailAndPassword(auth, credentials.email || '', credentials.password || '');
if (userCredential.user) {
const accessToken = userCredential.user.stsTokenManager.accessToken;
const refreshToken = userCredential.user.stsTokenManager.refreshToken;
const displayName = userCredential.user.displayName;
const email = userCredential.user.email;
const user_id = userCredential.user.reloadUserInfo.localId;
var tokenExpire = Date.now() + 1 * 50000;
return {
user: {
user_id: user_id,
token: accessToken,
refreshToken: refreshToken,
name: displayName,
email: email,
tokenExpire: tokenExpire,
}
};
}
return null;
} catch (error) {
console.log(error);
return null;
}
}
}),
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
}),
FacebookProvider({
clientId: process.env.FACEBOOK_CLIENT_ID,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
})
],
adapter: FirestoreAdapter({
credential: cert({
projectId: '',
clientEmail: "",
privateKey: "",
}),
}),
secret: process.env.NEXTAUTH_SECRET,
callbacks: {
async session({ session, token }) {
session.user = token.user;
console.log('sessssion', session);
return session;
},
async jwt({ token, user }) {
console.log('token user', token, user;
if (user) {
token.user = user;
return token;
}
return token
},
},
})