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
- Issue with OAuth 2.0 authentication
Good evening, I’m reaching out because I’m having a small issue with Appwrite. I’m trying to set up OAuth2 with Twitch, and even though I’m entering the correc...
- What's the proper way to delete user acc...
I would like to provide an option for the users of my app, to completely remove theirs account if they want to. I don't want to 'deactivate' the account, but to...
- Help