in example/main.dart [39:73]
Future<oauth2.Client> createClient() async {
var exists = await credentialsFile.exists();
// If the OAuth2 credentials have already been saved from a previous run, we
// just want to reload them.
if (exists) {
var credentials =
oauth2.Credentials.fromJson(await credentialsFile.readAsString());
return oauth2.Client(credentials, identifier: identifier, secret: secret);
}
// If we don't have OAuth2 credentials yet, we need to get the resource owner
// to authorize us. We're assuming here that we're a command-line application.
var grant = oauth2.AuthorizationCodeGrant(
identifier, authorizationEndpoint, tokenEndpoint,
secret: secret);
// A URL on the authorization server (authorizationEndpoint with some additional
// query parameters). Scopes and state can optionally be passed into this method.
var authorizationUrl = grant.getAuthorizationUrl(redirectUrl);
// Redirect the resource owner to the authorization URL. Once the resource
// owner has authorized, they'll be redirected to `redirectUrl` with an
// authorization code. The `redirect` should cause the browser to redirect to
// another URL which should also have a listener.
//
// `redirect` and `listen` are not shown implemented here.
await redirect(authorizationUrl);
var responseUrl = await listen(redirectUrl);
// Once the user is redirected to `redirectUrl`, pass the query parameters to
// the AuthorizationCodeGrant. It will validate them and extract the
// authorization code to create a new Client.
return await grant.handleAuthorizationResponse(responseUrl.queryParameters);
}