Hello appwrite lovers,
I am trying to implement Facebook auth in my NextJS app. I am using /app directory.
Here is my action:
'use server';
import { Account, Client, OAuthProvider } from 'appwrite';
import { cookies } from 'next/headers';
export async function signinWithFacebook() {
const client = new Client()
.setEndpoint(process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT!)
.setProject(process.env.NEXT_PUBLIC_APPWRITE_PROJECT!);
const account = new Account(client);
try {
account.createOAuth2Session(OAuthProvider.Facebook, '/', '/auth/signin', [
'email',
'public_profile',
]);
const session = await account.getSession('current');
cookies().set('session', session.secret, {
path: '/',
httpOnly: true,
sameSite: 'strict',
secure: true,
});
} catch (error) {
console.log(error);
}
}
And here is my login button:
<form action={signinWithFacebook}>
<Button variant='outline' type='submit'>
<Facebook className='mr-2' /> Sign in With Facebook
</Button>
</form>
But when I am clicking the button I am getting this error:
[AppwriteException: User (role: guests) missing scope (account)] {
name: 'AppwriteException',
code: 401,
type: 'general_unauthorized_scope',
response: {
message: 'User (role: guests) missing scope (account)',
code: 401,
type: 'general_unauthorized_scope',
version: '1.5.7'
}
Can anyone help me to resolve this issue. Big thanks in advance.
Have you looked at this tutorial for ssr auth in nextjs?
https://appwrite.io/docs/tutorials/nextjs-ssr-auth/step-3
Right off the bat I see youre using the client side sdk, you should be using node-appwrite on server actions.
Yes, I was able to create EmailPasswordSession successfully following this article.
Recommended threads
- How to determine if a user is anonymous?
This is probably a silly question, but I have not yet found a good answer. Is there a method to determine if the current session is anonymous aside from seein...
- ACTIVATE DEPLOYMENT PROBLEM...
It's not giving me the option to activate a deployment that says it's ready..
- Anonymous Sessions using Node SDKs
I am attempting to use anonymous sessions with the Node SDK but I have simply no idea how to persist the session to a cookie, pass it to the session client, etc...