initiateOAuth method

Future<String?> initiateOAuth(
  1. String platform,
  2. String username
)

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;
  }
}