fetchOAuthProfile function
Future<OAuthProfileResponse?>
fetchOAuthProfile({
- required String accessToken,
- HttpClient? httpClient,
Fetch profile info from the OAuth profile endpoint.
Implementation
Future<OAuthProfileResponse?> fetchOAuthProfile({
required String accessToken,
HttpClient? httpClient,
}) async {
final config = getOauthConfig();
final client = httpClient ?? HttpClient();
try {
final request = await client.getUrl(Uri.parse(config.profileUrl));
request.headers.set('Authorization', 'Bearer $accessToken');
final response = await request.close().timeout(const Duration(seconds: 15));
if (response.statusCode != 200) return null;
final responseBody = await response.transform(utf8.decoder).join();
return OAuthProfileResponse.fromJson(
jsonDecode(responseBody) as Map<String, dynamic>,
);
} catch (_) {
return null;
} finally {
if (httpClient == null) client.close();
}
}