refreshYouTubeTokens method
Refresh YouTube tokens (matching working implementation)
Implementation
Future<bool> refreshYouTubeTokens(String username) async {
try {
debugPrint('🔄 Refreshing YouTube tokens...');
final GoogleSignIn? googleSignIn = _googleSignIn;
if (googleSignIn == null) {
debugPrint('❌ Google Sign-In not initialized');
return false;
}
// Get current user
final GoogleSignInAccount? currentUser = await googleSignIn.signInSilently();
if (currentUser == null) {
debugPrint('❌ No current Google user found');
return false;
}
// Get fresh tokens
final GoogleSignInAuthentication auth = await currentUser.authentication;
// Send refreshed tokens to backend
final response = await http.post(
Uri.parse('$_apiBaseUrl/youtube/refresh-token'),
headers: {
'Content-Type': 'application/json',
},
body: json.encode({
'accessToken': auth.accessToken,
'idToken': auth.idToken,
'refreshToken': currentUser.serverAuthCode,
'userEmail': currentUser.email,
'username': username,
'tokenExpiry': DateTime.now().add(Duration(hours: 1)).toIso8601String(),
'timestamp': DateTime.now().toIso8601String(),
}),
);
if (response.statusCode == 200) {
debugPrint('✅ YouTube tokens refreshed successfully');
return true;
} else {
debugPrint('❌ Token refresh failed: ${response.statusCode}');
return false;
}
} catch (e) {
debugPrint('❌ Error refreshing YouTube tokens: $e');
return false;
}
}