
I am currently having difficulties using the already authenticated OAuth user and making calls to other APIs like the Google Calendar API to e.g. get the calendar entries. I have successfully authenticated the user using OAuth2 doing the following:
Client client = Client()
.setEndpoint('url')
.setProject('id');
Account account = Account(client);
await account.createOAuth2Session(
provider: OAuthProvider.google,
success: "http://localhost:8080/auth/oauth2/success",
failure: "http://localhost:8080/auth/oauth2/failure",
scopes: ['openid', 'https://www.googleapis.com/auth/calendar'],
);
I now have access to the current user and the session:
loggedInUser = await account.get();
currentSession = await account.getSession(sessionId: 'current');
I now want to use this authenticated OAuth client to make requests (and also handle refresh tokens) to other APIs. The Google Calendar API for example takes a modified http client that sends the Authorization header with every request. For example:
var googleCalendar = CalendarApi(<http.Client>);
calendarList = await googleCalendar.calendarList.list();
My question is: How can I get the already authorized httpClient from the Appwrite SDK so that i can use it to call other SDKs and also make common REST API calls using the http client itself? I see that the Client object has a method call()
which uses the internal httpClient to do exactly what I describe (Using the underlying httpClient to make authorized requests).
I am currently doing the following as a workaround and it gets pretty messy handling the refresh and scopes for both flutter libraries (Using the OAuth Flutter Package: https://pub.dev/packages/oauth2):
currentOAuth2Client = oauth2.Client(
oauth2.Credentials(
currentSession.providerAccessToken,
...
),
);
Recommended threads
- 503 Timeout when Updating or Upserting D...
Hey I’m running into an issue when trying to update or upsert a row in Appwrite. The request hangs for a while and then throws this error: ``` AppwriteException...
- Hola equipo de soporte,
Hola equipo de soporte, Estoy desarrollando una Function en Appwrite Cloud con Node.js 22 y el siguiente package.json: { "name": "upload-whitelist", "type"...
- Sites 30MB limit from GitHub
I’m deploying a site from github as Other type on the Hobby plan. It is actually a Flutter web app but it’s in a subdirectory with the root being an html landin...
