AppwriteException: general_unauthorized_scope, User (role: guests) missing scope (account) (401)
- 0
- Flutter

Before loggin out you can check if the user is even logged in by running the account.get()
inside try catch

yes I am loggedin before I logout

In between you're also required to get the session by using account.get()
Can you test when you're using the account.get()
right after login?

I just tried to login and it took 5 tries to login

after 5 tries it worked but other 4 gave the error

logout([bool deleteSessions = true]) async {
state = const AuthState(isLoggedIn: false);
if (deleteSessions) {
Client client = ref.read(appwriteClientProvider);
Account account = Account(client);
try {
var acc = await account.get();
await account.deleteSessions();
} catch (e) {
log(e.toString());
}
}
}

What was the error when you tried to log in?

AppwriteException: general_unauthorized_scope, User (role: guests) missing scope (account) (401)

When login?

yes I get this error when I try to login not try to logout

await account.createOAuth2Session(provider: 'apple');
login() async {
try {
Client client = ref.read(appwriteClientProvider);
Account account = Account(client);
var appwriteUser = await account.get();
} catch (e) {
log("auth_provider Login error: $e");
Sentry.captureException(e);
}
}```

Where is the login it self?

You still need to create the session

Like createEmailSession

I use oauth2

Can you share the code flow

okay

AppleAuthButton(
onPressed: () async {
await account.createOAuth2Session(provider: 'apple');
return _completeLogin();
},
themeMode: ThemeMode.light,
),
void _completeLogin() async {
await ref.read(authProvider.notifier).login();
}
login() async {
try {
Client client = ref.read(appwriteClientProvider);
Account account = Account(client);
var appwriteUser = await account.get();
state = AuthState(
isLoggedIn: true,
userId: appwriteUser.$id,
fullName: appwriteUser.name,
email: appwriteUser.email,
kollektorId: kUser["id"]);
} catch (e) {
log("auth_provider Login error: $e");
Sentry.captureException(e);
}
}

Can you add try catch here
AppleAuthButton(
onPressed: () async {
try {
await account.createOAuth2Session(provider: 'apple');
return _completeLogin();
} catch (e) {
// log here
}
},
themeMode: ThemeMode.light,
),

i did

it doesnt catch anything there even there is a general_unauthorized_scope error

createOAuth2Session
doesn't return the session, you need to add your logic in the success URL

i believe it doesnt explain the inconsistency with the login

it only happens time to time

Just think this: when you start createOAuth2Session
you go to a new page, this is a third party page, appwrite can't follow the state, that is why you need to continue your flow with the success
and failed
URL. It maybe works time to time because a previous session I'm not sure, but if you change your flow, it will always work
Recommended threads
- Redirect URL sends HTTP instead of HTTPS...
I am not sure since when this issue is present, but my Google and Apple redirect URI are no longer pointing to the HTTPS redirect URI when I try to use OAuth. ...
- Failing to run document operations on sd...
Could someone point me in the right direction I'm going in cirlces. I have a problem with sdks and my self-hosted server in production (for ~3 years) I have bee...
- Functions fail to deploy after switching...
Hi <@1087889306208718959> , after switching my self-hosted Appwrite instance to use AWS S3 as the storage backend, my Cloud Functions stopped working. I’m runni...
