initiateOAuth method
Initiate OAuth flow for web-based platforms
Implementation
Future<String?> initiateOAuth(String platform, String username) async {
try {
if (platform == 'email') {
debugPrint('Email platform selected, returning mock auth URL');
return '$_apiBaseUrl/email/authorize?action=verify';
}
final proxyUrl = '$_apiBaseUrl/$platform/authorize';
debugPrint('Initiating OAuth for $platform with username: $username');
final response = await http.post(
Uri.parse(proxyUrl),
headers: {'Content-Type': 'application/json'},
body: jsonEncode({
'session': {
'username': username,
'platform': platform,
'timestamp': DateTime.now().toIso8601String(),
}
}),
);
if (response.statusCode != 200) {
debugPrint('Error initiating OAuth for $platform: ${response.statusCode}');
return null;
}
final data = jsonDecode(response.body);
final urlKey = '${platform}URL';
final authUrl = data[urlKey] ?? data['url'];
debugPrint('Auth URL for $platform: $authUrl');
return authUrl;
} catch (error) {
debugPrint('Error initiating OAuth for $platform: $error');
return null;
}
}